/* ============================================================
   众创空间 — 内蒙古商贸职业学院创新创业协会
   设计系统 v7 · 编辑部高级风「墨 · 纸 · 朱」
   落地页：墨黑底 + 宣纸米白 + 朱砂/鎏金 + 超大衬线 + 胶片颗粒
   功能页：暖纸底 + 墨字 + 朱砂强调（测评 / 报告 / 管理端）
   ============================================================ */
:root {
  /* 墨域（落地页） */
  --inkbg: #0D0C09;
  --inkbg-2: #151310;
  --snow: #F2EDDF;
  --fog: rgba(233, 226, 210, .80);
  --fog-2: rgba(233, 226, 210, .52);
  --hair: rgba(233, 226, 210, .14);
  --hair-2: rgba(233, 226, 210, .26);
  /* 纸域 */
  --paper: #F2EEE1;
  --cream: #F8F4E9;
  --card: #FBF8F0;
  /* 朱 / 金 */
  --cinnabar: #B3351F;
  --cinnabar-b: #D6482C;
  --gold: #C6A15B;
  --gold-2: #DCC08B;
  /* 浅色域（功能页） */
  --white: #FDFBF4;
  --ink: #18150E;
  --ink-2: #3D392C;
  --ink-3: #6A6250;
  --muted: #9C947E;
  --line: #E0D9C6;
  --line-2: #E9E3D2;
  --ink-4: #9C947E;
  --brand: #8F2E1B;
  --navy: #8F2E1B;
  --navy-soft: #F5E4DC;
  --seal: #AE2E1A;
  --ok: #2E6B4F;
  --warn: #8A611E;
  --bad: #A8281C;
  --blue: #B3351F;
  --blue-2: #C9502F;
  --grad: linear-gradient(96deg, #A93318, #CE4A28);
  --grad-soft: linear-gradient(96deg, rgba(179, 53, 31, .10), rgba(214, 72, 44, .07));
  --serif: "Noto Serif SC", "Source Han Serif SC", "Songti SC", "STSong", "SimSun", Georgia, serif;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  --num: "SF Pro Display", "Segoe UI", "PingFang SC", sans-serif;
  --sh-1: 0 1px 2px rgba(24, 21, 14, .05), 0 10px 30px -18px rgba(24, 21, 14, .20);
  --sh-2: 0 2px 6px rgba(24, 21, 14, .06), 0 24px 48px -28px rgba(24, 21, 14, .30);
  --sh-glow: 0 0 0 1px rgba(214, 72, 44, .30), 0 10px 34px -8px rgba(179, 53, 31, .55);
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }

body {
  font-family: var(--sans);
  color: var(--ink);
  background: var(--paper);
  font-size: 15px;
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

a { color: var(--blue); text-decoration: none; transition: color .18s; }
h1, h2, h3, h4, h5 { font-weight: 700; line-height: 1.32; color: inherit; letter-spacing: -.01em; }
p { margin: 0 0 12px; }
ul, ol { margin: 0 0 12px; padding-left: 1.1em; }
li { margin-bottom: 7px; }
b, strong { font-weight: 700; }
::selection { background: rgba(179, 53, 31, .22); }

.wrap { max-width: 1160px; margin: 0 auto; padding: 0 40px; }
.wrap-sm { max-width: 840px; margin: 0 auto; padding: 0 32px; }

/* ============================================================
   落地页 · 墨域「编辑部」
   ============================================================ */
.ink {
  background: var(--inkbg);
  color: var(--snow);
  min-height: 100vh;
  position: relative;
  overflow-x: clip;
}
/* 胶片颗粒 */
.ink::after {
  content: ""; position: fixed; inset: 0; z-index: 90; pointer-events: none; opacity: .055;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}
.ink a { color: var(--gold-2); }
.ink a:hover { color: var(--snow); }

/* 顶栏：细金线 */
.ink .topbar {
  position: sticky; top: 0; z-index: 60;
  background: rgba(13, 12, 9, .86);
  backdrop-filter: saturate(150%) blur(16px); -webkit-backdrop-filter: saturate(150%) blur(16px);
  border-bottom: 1px solid var(--hair);
}
.topbar-in { max-width: 1160px; margin: 0 auto; padding: 0 40px; height: 72px; display: flex; align-items: center; gap: 20px; }
.logo { display: flex; align-items: center; gap: 14px; }
.logo-mark {
  width: 40px; height: 40px; flex: none;
  border: 1px solid var(--gold); background: transparent;
  display: grid; place-items: center;
  font-family: var(--serif); font-size: 19px; font-weight: 700; color: var(--gold);
}
.logo-text { display: flex; flex-direction: column; line-height: 1.15; }
.logo-text i { font-style: normal; font-family: var(--serif); font-size: 18px; font-weight: 700; letter-spacing: .34em; color: var(--snow); white-space: nowrap; }
.logo-text small { font-size: 9.5px; color: var(--fog-2); letter-spacing: .16em; margin-top: 4px; font-weight: 500; }

.topbar nav { margin-left: auto; display: flex; align-items: center; gap: 2px; }
.topbar nav a {
  color: var(--fog); font-size: 13px; font-weight: 500; letter-spacing: .06em;
  padding: 8px 16px; transition: color .16s, background .16s;
  white-space: nowrap; flex: none;
}
.topbar nav a:hover { color: var(--snow); }
.topbar nav a.on { color: var(--gold-2); }

/* ====== 主视觉 ====== */
.ink .hero { position: relative; padding: 96px 0 104px; }
.ink .hero::before { /* 巨型底纹字 */
  content: "众"; position: absolute; right: -2%; top: -6%; z-index: 0;
  font-family: var(--serif); font-size: clamp(380px, 46vw, 620px); font-weight: 700;
  color: transparent; -webkit-text-stroke: 1px rgba(233, 226, 210, .07); line-height: 1;
  pointer-events: none; user-select: none;
}
.hero-in { display: grid; grid-template-columns: auto minmax(0, 1.08fr) minmax(0, .92fr); gap: 64px; align-items: center; position: relative; z-index: 1; }

/* 竖排侧栏 */
.hero-side {
  writing-mode: vertical-rl; height: 320px; flex: none;
  display: flex; align-items: center;
  border-left: 1px solid var(--hair); padding-left: 26px; gap: 18px;
  font-family: var(--serif); letter-spacing: .42em;
}
.hero-side .v1 { font-size: 15px; color: var(--gold); }
.hero-side .v2 { font-size: 11px; color: var(--fog-2); letter-spacing: .34em; }

.hero-main .kicker {
  display: inline-flex; align-items: center; gap: 16px; margin-bottom: 34px;
  font-size: 12px; letter-spacing: .3em; color: var(--fog);
  padding: 10px 0; border-top: 1px solid var(--hair-2); border-bottom: 1px solid var(--hair-2);
}
.hero-main .kicker::before { content: ""; width: 34px; height: 1px; background: var(--gold); }
.hero-main .kicker i { font-style: normal; color: var(--gold-2); }
.hero h1 {
  font-family: var(--serif);
  font-size: clamp(42px, 5.4vw, 76px); line-height: 1.22; font-weight: 700; letter-spacing: .01em;
  margin-bottom: 30px; color: var(--snow);
}
.hero h1 em { font-style: normal; color: var(--cinnabar-b); }
/* 分行揭幕 */
.hero h1 .hl { display: block; overflow: hidden; }
.hero h1 .hl > i { display: block; font-style: normal; transform: translateY(112%); animation: hlUp .95s cubic-bezier(.16, .84, .2, 1) forwards; }
.hero h1 .hl:nth-child(2) > i { animation-delay: .12s; }
@keyframes hlUp { to { transform: translateY(0); } }
.hero h1 .dash { color: var(--gold); }
.hero .lead { font-size: 15.5px; line-height: 2.1; color: var(--fog); max-width: 36em; margin-bottom: 40px; }
.hero .lead b { color: var(--snow); font-weight: 600; }

.hero-actions { display: flex; align-items: center; gap: 18px; margin-bottom: 46px; flex-wrap: wrap; }
.link-more { font-size: 13px; color: var(--fog); letter-spacing: .08em; }
.link-more::after { content: "→"; margin-left: 8px; transition: transform .2s; }
.link-more:hover { color: var(--snow); }
.link-more:hover::after { transform: translateX(4px); }

.hero-logos { display: flex; align-items: stretch; flex-wrap: wrap; gap: 14px; }
.hero-logos .chip {
  display: inline-flex; align-items: center; gap: 10px; padding: 10px 18px;
  border: 1px solid var(--hair); font-size: 11.5px; letter-spacing: .1em; color: var(--fog);
  transition: border-color .2s;
}
.hero-logos .chip:hover { border-color: var(--hair-2); }
a.chip { text-decoration: none; }
.chip-link { cursor: pointer; transition: border-color .2s, background .2s, transform .2s; }
.chip-link:hover { border-color: var(--gold) !important; background: rgba(198, 161, 91, .08); transform: translateY(-1px); }
.chip-go { font-style: normal; font-size: 10px; letter-spacing: .12em; color: var(--gold); border-left: 1px solid var(--hair); padding-left: 10px; white-space: nowrap; }
.hero-logos img { width: 24px; height: 24px; display: block; object-fit: contain; }
.hero-logos b { font-weight: 600; color: var(--snow); }

/* ====== 右侧：纸面档案卡 ====== */
.hero-art { position: relative; z-index: 1; min-width: 0; }
.paper-card {
  position: relative; width: 100%; min-width: 0;
  background: var(--cream); color: var(--ink);
  border: 1px solid rgba(24, 21, 14, .9);
  box-shadow: 14px 14px 0 rgba(13, 12, 9, 1), 0 40px 90px -30px rgba(0, 0, 0, .9);
  padding: 30px 32px 26px;
}
img { max-width: 100%; }
.pc-head { display: flex; justify-content: space-between; align-items: flex-start; padding-bottom: 18px; border-bottom: 1.5px solid var(--ink); }
.pc-head .t { font-family: var(--serif); font-size: 17px; font-weight: 700; letter-spacing: .14em; }
.pc-head .meta { font-size: 9px; color: var(--ink-3); letter-spacing: .18em; line-height: 2; text-align: right; font-variant-numeric: tabular-nums; }
.pc-body { display: flex; align-items: center; gap: 26px; padding: 26px 0 22px; }
.pc-score { text-align: center; flex: none; padding-right: 26px; border-right: 1px solid var(--line); }
.pc-score b { display: block; font-family: var(--serif); font-size: 52px; line-height: 1; font-weight: 700; color: var(--cinnabar); font-variant-numeric: tabular-nums; }
.pc-score span { display: block; margin-top: 10px; font-size: 9px; letter-spacing: .26em; color: var(--ink-3); }
.pc-bars { flex: 1; min-width: 0; display: grid; gap: 13px; }
.pc-bar { display: grid; grid-template-columns: 56px minmax(0, 1fr) 26px; align-items: center; gap: 10px; font-size: 10px; color: var(--ink-3); letter-spacing: .06em; }
.pc-bar .track { height: 5px; background: var(--line); position: relative; }
.pc-bar .track i { position: absolute; inset: 0 auto 0 0; background: var(--cinnabar); }
.pc-bar em { font-style: normal; text-align: right; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; }
.pc-rows { border-top: 1px solid var(--line); }
.pc-row { display: flex; justify-content: space-between; gap: 10px; padding: 11px 0; border-bottom: 1px solid var(--line); font-size: 11px; color: var(--ink-3); letter-spacing: .04em; }
.pc-row b { color: var(--ink); font-weight: 600; }
.pc-foot { display: flex; justify-content: space-between; padding-top: 16px; font-size: 9.5px; color: var(--ink-3); letter-spacing: .2em; }
.pc-seal {
  position: absolute; right: -22px; bottom: -26px; z-index: 3;
  width: 78px; height: 78px; border: 2.5px solid var(--cinnabar);
  display: grid; place-items: center; transform: rotate(-8deg);
  color: var(--cinnabar); font-family: var(--serif); font-size: 15px; font-weight: 700;
  letter-spacing: .1em; text-align: center; line-height: 1.5;
  background: rgba(248, 244, 233, .92);
  box-shadow: 0 0 0 4px rgba(13, 12, 9, .9);
}

/* ====== 跑马灯战绩带 ====== */
.ticker { background: var(--cinnabar); overflow: hidden; border-top: 1px solid rgba(0,0,0,.25); border-bottom: 1px solid rgba(0,0,0,.25); }
.ticker-in { display: flex; width: max-content; animation: scrollx 36s linear infinite; }
.ticker:hover .ticker-in { animation-play-state: paused; }
.ticker-in span {
  display: inline-flex; align-items: center; gap: 22px; white-space: nowrap;
  padding: 13px 22px 13px 0; color: #F8F1E4; font-size: 12.5px; letter-spacing: .14em; font-weight: 600;
}
.ticker-in span::after { content: "／"; opacity: .45; font-weight: 400; }
@keyframes scrollx { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ====== 参与人数（墨域细线） ====== */
.counter-band { border-bottom: 1px solid var(--hair); }
.counter-in { display: flex; align-items: baseline; flex-wrap: wrap; padding-top: 30px; padding-bottom: 30px; }
.c-item { display: flex; align-items: baseline; gap: 12px; padding-right: 36px; margin-right: 36px; border-right: 1px solid var(--hair); }
.c-item b { font-family: var(--serif); font-size: 34px; font-weight: 700; line-height: 1; letter-spacing: .02em; font-variant-numeric: tabular-nums; color: var(--gold-2); }
.c-item span { font-size: 11.5px; color: var(--fog-2); letter-spacing: .1em; }
.c-link { margin-left: auto; font-size: 11.5px; color: var(--fog); letter-spacing: .1em; }
.c-link:hover { color: var(--snow); }

/* ====== 纸面章节 ====== */
.paper { background: var(--paper); color: var(--ink); position: relative; }
.paper::before { /* 纸面颗粒 */
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .04;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}
.paper .wrap { position: relative; }
.paper a { color: var(--cinnabar); }
.paper a:hover { color: var(--cinnabar-b); }

.ink .sec-band { padding: 96px 0 0; }
.paper .sec-band { padding: 96px 0 0; }
.sec-head { display: flex; align-items: flex-end; gap: 24px; padding-bottom: 20px; border-bottom: 1px solid var(--hair); position: relative; }
.paper .sec-head { border-bottom: 1px solid var(--ink); }
.sec-head .no {
  font-family: var(--serif); font-size: 56px; line-height: .9; font-weight: 700; flex: none;
  color: transparent; -webkit-text-stroke: 1px rgba(233, 226, 210, .30); letter-spacing: .02em;
  font-variant-numeric: tabular-nums;
}
.paper .sec-head .no { -webkit-text-stroke: 1px rgba(24, 21, 14, .30); }
.sec-head .hgroup { flex: 1; min-width: 0; }
.sec-head h2 { font-family: var(--serif); font-size: clamp(22px, 2.6vw, 30px); font-weight: 700; letter-spacing: .02em; color: var(--snow); }
.paper .sec-head h2 { color: var(--ink); }
.sec-head .note { font-size: 11px; color: var(--fog-2); letter-spacing: .22em; flex: none; padding-bottom: 6px; }
.paper .sec-head .note { color: var(--ink-3); }

/* 三栏战绩（纸面） */
.three { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; padding: 48px 0 8px; }
.three .col { padding: 6px 34px 18px; border-left: 1px solid var(--line); }
.three .col:first-child { border-left: 0; padding-left: 0; }
.col .role { font-size: 10.5px; letter-spacing: .24em; color: var(--cinnabar); font-weight: 700; margin-bottom: 16px; }
.col h4 { font-family: var(--serif); font-size: 21px; font-weight: 700; margin-bottom: 12px; color: var(--ink); line-height: 1.5; }
.col p { font-size: 13px; line-height: 2; color: var(--ink-2); margin: 0; }
.award-src { margin: 18px 0 0; font-size: 11.5px; color: var(--muted); letter-spacing: .04em; line-height: 1.7; }
.award-src::before { content: "· "; }

/* ====== 人物案例（编辑部排版） ====== */
.profile { display: grid; grid-template-columns: 216px 1fr; gap: 40px; margin-top: 48px; }
.profile-side { border-right: 1px solid var(--ink); padding-right: 36px; }
.p-photo { width: 100%; aspect-ratio: 4 / 5; overflow: hidden; margin-bottom: 20px; position: relative; }
.p-photo img { width: 100%; height: 100%; object-fit: cover; display: block; filter: grayscale(.18) sepia(.08) contrast(1.02); }
.p-photo::after { content: ""; position: absolute; inset: 10px; border: 1px solid rgba(248, 244, 233, .55); pointer-events: none; }
.p-name { font-family: var(--serif); font-size: 30px; font-weight: 700; color: var(--ink); letter-spacing: .12em; }
.p-role { margin-top: 10px; font-size: 11.5px; color: var(--ink-3); line-height: 2; letter-spacing: .05em; }
.p-role b { color: var(--cinnabar); font-weight: 600; }
.p-story { font-size: 14px; line-height: 2.15; color: var(--ink-2); }
.p-story b { color: var(--ink); font-weight: 700; border-bottom: 2px solid rgba(179, 53, 31, .25); padding-bottom: 1px; }
.p-line { display: flex; flex-wrap: wrap; margin-top: 24px; row-gap: 16px; border-top: 1px solid var(--ink); padding-top: 22px; }
.p-step { padding: 0 24px; border-left: 1px solid var(--line); }
.p-step:first-child { padding-left: 0; border-left: 0; }
.p-step b { display: block; font-family: var(--serif); font-size: 13px; font-weight: 700; color: var(--cinnabar); letter-spacing: .04em; }
.p-step span { display: block; margin-top: 6px; font-size: 11.5px; color: var(--ink-3); line-height: 1.75; }
.p-close { margin-top: 24px; font-family: var(--serif); font-size: 15.5px; line-height: 2.05; color: var(--ink); font-weight: 600; }
.p-close em { font-style: normal; color: var(--cinnabar); }
.p-src { margin: 16px 0 0; font-size: 11.5px; color: var(--muted); letter-spacing: .04em; }
.p-id, .profile-body { min-width: 0; }

/* ====== 两条路（墨域卡） ====== */
.duo { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; padding: 48px 0 8px; }
.duo-card {
  position: relative; padding: 40px 40px 36px; display: flex; flex-direction: column;
  border: 1px solid var(--hair-2);
  background: linear-gradient(170deg, rgba(233, 226, 210, .045), rgba(233, 226, 210, .012) 50%);
  transition: border-color .24s, transform .24s, background .24s;
}
.duo-card:hover { border-color: var(--gold); transform: translateY(-4px); }
.duo-card .tag {
  display: inline-flex; align-self: flex-start; padding: 5px 14px; margin-bottom: 22px;
  border: 1px solid rgba(198, 161, 91, .5); font-size: 10.5px; letter-spacing: .2em; color: var(--gold-2); font-weight: 600;
}
.duo-card h3 { font-family: var(--serif); font-size: 25px; font-weight: 700; letter-spacing: .06em; margin-bottom: 14px; color: var(--snow); }
.duo-card .desc { font-size: 13.5px; line-height: 2.05; color: var(--fog); margin-bottom: 24px; }
.duo-card .pts { list-style: none; padding: 0; margin: 0 0 30px; }
.duo-card .pts li { position: relative; padding-left: 22px; font-size: 12.8px; color: var(--fog); margin-bottom: 11px; line-height: 1.8; }
.duo-card .pts li::before { content: ""; position: absolute; left: 0; top: 10px; width: 10px; height: 1px; background: var(--gold); }
.duo-card .go { margin-top: auto; align-self: flex-start; }

/* ====== 报告结构（纸面） ====== */
.report-split { display: grid; grid-template-columns: .92fr 1.08fr; gap: 60px; padding: 48px 0 0; align-items: start; }
.report-split .copy h3 { font-family: var(--serif); font-size: 22px; font-weight: 700; margin-bottom: 16px; color: var(--ink); letter-spacing: .04em; }
.report-split .copy p { font-size: 13.5px; line-height: 2.05; color: var(--ink-2); }
.spec-list { list-style: none; padding: 0; margin: 28px 0 0; }
.spec-list li { display: flex; gap: 16px; padding: 13px 0; border-bottom: 1px solid var(--line); font-size: 12.8px; color: var(--ink-2); line-height: 1.8; }
.spec-list li span.n { font-family: var(--serif); color: var(--cinnabar); font-weight: 700; font-size: 12px; flex: none; padding-top: 1px; font-variant-numeric: tabular-nums; }
.toc-card { background: var(--cream); border: 1px solid var(--ink); box-shadow: 10px 10px 0 rgba(24, 21, 14, .12); padding: 28px 30px; }
.toc-card h4 { font-family: var(--serif); font-size: 14px; font-weight: 700; color: var(--ink); margin-bottom: 16px; letter-spacing: .2em; }
.toc-row { display: flex; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: 12.8px; color: var(--ink-2); }
.toc-row:last-child { border-bottom: 0; }
.toc-row em { font-style: normal; color: var(--ink-3); flex: none; font-variant-numeric: tabular-nums; }

/* ====== 硬通货（纸面三栏） ====== */
.hard { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; padding: 48px 0 8px; }
.hard .col { padding: 6px 34px 18px; border-left: 1px solid var(--line); }
.hard .col:first-child { border-left: 0; padding-left: 0; }

/* ====== 宣言带（墨域巨字） ====== */
.manifesto-band { background: var(--inkbg); color: var(--snow); position: relative; overflow: hidden; }
.manifesto-band::before {
  content: "创"; position: absolute; left: -3%; bottom: -34%;
  font-family: var(--serif); font-size: clamp(300px, 34vw, 460px); font-weight: 700; line-height: 1;
  color: transparent; -webkit-text-stroke: 1px rgba(233, 226, 210, .06); pointer-events: none; user-select: none;
}
.manifesto { text-align: center; padding: 110px 24px 116px; position: relative; }
.manifesto .qm { font-family: var(--serif); display: block; color: var(--cinnabar-b); font-size: 30px; margin-bottom: 20px; }
.manifesto p { font-family: var(--serif); font-size: clamp(24px, 3.4vw, 38px); line-height: 1.85; font-weight: 700; color: var(--snow); letter-spacing: .06em; }
.manifesto em { font-style: normal; color: var(--gold-2); }
.manifesto span { display: block; margin-top: 26px; font-size: 12px; color: var(--fog-2); letter-spacing: .3em; }
.manifesto > span:last-child::before { content: "—— "; color: var(--hair-2); }
.manifesto > span:last-child::after { content: " ——"; color: var(--hair-2); }

/* ====== 须知（纸面） ====== */
.notes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; padding: 44px 0 0; }
.note-item { padding: 8px 34px 18px; border-left: 1px solid var(--line); }
.note-item:first-child { border-left: 0; padding-left: 0; }
.note-item .nn { font-family: var(--serif); font-size: 12px; color: var(--cinnabar); font-weight: 700; letter-spacing: .2em; margin-bottom: 10px; }
.note-item h4 { font-family: var(--serif); font-size: 16.5px; font-weight: 700; margin-bottom: 10px; color: var(--ink); }
.note-item p { font-size: 12.6px; line-height: 2; color: var(--ink-2); margin: 0; }

/* ====== 按钮 ====== */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  padding: 15px 34px; border-radius: 2px; border: 1px solid transparent;
  font-size: 13.5px; font-weight: 600; letter-spacing: .14em; cursor: pointer; font-family: inherit;
  transition: transform .14s, box-shadow .2s, background .2s, border-color .2s, color .2s;
}
.btn:active { transform: translateY(1px); }
.ink .btn-primary, .paper .btn-primary { background: var(--cinnabar); color: #F8F1E4; border-color: var(--cinnabar); box-shadow: 0 14px 34px -12px rgba(179, 53, 31, .55); }
.ink .btn-primary:hover, .paper .btn-primary:hover { background: #C23A20; color: #F8F1E4; border-color: #C23A20; transform: translateY(-2px); box-shadow: 0 18px 40px -12px rgba(179, 53, 31, .65); }
.ink .btn-ghost { background: transparent; border-color: var(--hair-2); color: var(--snow); }
.ink .btn-ghost:hover { border-color: var(--gold); color: var(--gold-2); }
.paper .btn-ghost { background: transparent; border-color: var(--ink); color: var(--ink); }
.paper .btn-ghost:hover { background: var(--ink); color: var(--cream); }
.btn-accent { background: linear-gradient(96deg, #C23A20, #D6482C); color: #F8F1E4; }
.btn-sm { padding: 10px 18px; font-size: 12.5px; border-radius: 2px; letter-spacing: .1em; }
.btn-block { width: 100%; }
.btn:disabled { opacity: .38; cursor: not-allowed; }

/* ====== 页脚（墨域 + 竖排校训） ====== */
.ink .footer { border-top: 1px solid var(--hair); margin-top: 110px; padding: 46px 0 60px; position: relative; }
.footer-in { display: grid; grid-template-columns: 1fr auto auto 1fr; gap: 32px; align-items: center; }
.footer .f-l { font-size: 11.5px; color: var(--fog-2); line-height: 2.2; letter-spacing: .06em; }
.footer .f-l b { font-family: var(--serif); color: var(--snow); letter-spacing: .24em; font-weight: 700; font-size: 13px; }
.footer .motto {
  writing-mode: vertical-rl; white-space: nowrap; font-family: var(--serif); font-size: 15px; letter-spacing: .42em;
  color: var(--gold); border-left: 1px solid var(--hair); border-right: 1px solid var(--hair);
  padding: 18px 18px; height: auto; display: flex; align-items: center;
}
.footer .f-r { font-size: 10px; color: var(--fog-2); letter-spacing: .18em; text-align: right; line-height: 2.2; }

.ink-2 { background: var(--inkbg-2); color: var(--snow); }
.ink-2 a { color: var(--gold-2); }
.ink-2 a:hover { color: var(--snow); }

/* 滚动显现 */
.rv { opacity: 0; transform: translateY(22px); transition: opacity .8s ease, transform .8s cubic-bezier(.2, .7, .2, 1); }
.rv.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .rv { opacity: 1; transform: none; transition: none; } .ticker-in { animation: none; } }

/* ============================================================
   功能页 · 纸域（测评 / 报告 / 管理端）
   ============================================================ */
.light { background: var(--paper); }
.light .topbar {
  position: sticky; top: 0; z-index: 60;
  background: rgba(242, 238, 225, .9);
  backdrop-filter: saturate(160%) blur(16px); -webkit-backdrop-filter: saturate(160%) blur(16px);
  border-bottom: 1px solid var(--line);
}
.light .logo-text i { color: var(--ink); letter-spacing: .24em; }
.light .logo-text small { color: var(--muted); }
.light .logo-mark { border-color: var(--cinnabar); color: var(--cinnabar); }
.light .topbar nav a { color: var(--ink-3); letter-spacing: .04em; }
.light .topbar nav a:hover { color: var(--ink); }
.light .topbar nav a.on { color: var(--cinnabar); }

.light .btn-primary { background: var(--grad); color: #F8F1E4; box-shadow: 0 6px 20px -8px rgba(179, 53, 31, .55); }
.light .btn-primary:hover { color: #F8F1E4; box-shadow: 0 10px 28px -10px rgba(179, 53, 31, .7); transform: translateY(-1px); }
.light .btn-ghost { background: var(--white); border-color: var(--line); color: var(--ink-2); }
.light .btn-ghost:hover { background: var(--line-2); border-color: var(--ink-3); color: var(--ink); }

/* 问卷 */
.survey-head { padding: 54px 0 0; }
.survey-head .kicker { display: inline-flex; align-items: center; gap: 10px; padding: 6px 14px; border: 1px solid var(--line); background: var(--white); font-size: 11px; letter-spacing: .16em; color: var(--cinnabar); font-weight: 600; margin-bottom: 18px; }
.survey-head h1 { font-family: var(--serif); font-size: 31px; letter-spacing: .02em; margin-bottom: 12px; color: var(--ink); }
.survey-head .sub { color: var(--ink-3); font-size: 13.5px; max-width: 40em; line-height: 1.95; }

.progress-shell { margin: 32px 0 6px; }
.progress-bar { height: 5px; background: var(--line); position: relative; overflow: hidden; }
.progress-bar > i { display: block; height: 100%; width: 0; background: var(--grad); transition: width .45s cubic-bezier(.2, .8, .2, 1); }
.progress-meta { display: flex; justify-content: space-between; font-size: 10.5px; color: var(--muted); margin-top: 10px; letter-spacing: .08em; font-variant-numeric: tabular-nums; }

.step-nav { display: flex; gap: 10px; flex-wrap: wrap; margin: 24px 0 30px; }
.step-chip { font-size: 12px; color: var(--muted); cursor: pointer; padding: 6px 13px; background: var(--white); border: 1px solid var(--line); transition: all .16s; }
.step-chip:hover { color: var(--ink-2); border-color: var(--ink-3); }
.step-chip.done { color: var(--ink-3); }
.step-chip.cur { color: #F8F1E4; font-weight: 600; background: var(--grad); border-color: transparent; box-shadow: 0 4px 14px -6px rgba(179, 53, 31, .55); }

.q-card { background: var(--white); border: 1px solid var(--line); border-radius: 3px; padding: 40px 42px 36px; margin-bottom: 22px; box-shadow: var(--sh-1); animation: rise .38s cubic-bezier(.2, .8, .2, 1) both; }
@keyframes rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.q-step-title { font-family: var(--serif); font-size: 21px; letter-spacing: .02em; margin-bottom: 8px; }
.q-step-hint { font-size: 12.5px; color: var(--ink-3); margin-bottom: 32px; padding-bottom: 20px; border-bottom: 1px solid var(--line-2); line-height: 1.9; }
.q-field { margin-bottom: 30px; }
.q-field:last-child { margin-bottom: 0; }
.q-label { display: block; font-size: 13.5px; font-weight: 700; margin-bottom: 6px; }
.q-label .req { color: var(--bad); margin-left: 3px; font-weight: 400; }
.q-help { font-size: 11.5px; color: var(--muted); margin-bottom: 12px; line-height: 1.7; }

input[type=text], input[type=number], input[type=tel], select, textarea {
  width: 100%; padding: 12px 16px; border: 1px solid var(--line); border-radius: 3px;
  font-size: 14.5px; font-family: inherit; color: var(--ink); background: var(--white);
  transition: border-color .18s, box-shadow .18s; outline: none;
}
input::placeholder, textarea::placeholder { color: var(--muted); }
input:hover, select:hover, textarea:hover { border-color: var(--ink-3); }
input:focus, select:focus, textarea:focus { border-color: var(--cinnabar); box-shadow: 0 0 0 3px rgba(179, 53, 31, .13); }
textarea { resize: vertical; min-height: 80px; line-height: 1.9; }
select { appearance: none; padding-right: 36px; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%239C947E' d='M0 0h10L5 6z'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 14px center; }
select:disabled { color: var(--muted); cursor: not-allowed; background: var(--line-2); }

.opt-grid { display: grid; gap: 9px; }
.opt-grid.c2 { grid-template-columns: 1fr 1fr; }
.opt-grid.c3 { grid-template-columns: repeat(3, 1fr); }
.opt {
  display: flex; align-items: flex-start; gap: 10px; padding: 13px 16px;
  border: 1px solid var(--line); border-radius: 3px; cursor: pointer; font-size: 13.5px;
  color: var(--ink-2); background: var(--white); transition: border-color .16s, background .16s, box-shadow .16s; user-select: none;
}
.opt:hover { border-color: var(--ink-3); }
.opt input { margin: 5px 0 0; accent-color: var(--cinnabar); flex: none; }
.opt.sel { border-color: var(--cinnabar); background: var(--navy-soft); color: var(--ink); box-shadow: 0 0 0 3px rgba(179, 53, 31, .10); }
.opt .ol { display: flex; flex-direction: column; gap: 3px; }
.opt .os { font-size: 11.5px; color: var(--muted); font-weight: 400; }
.opt.sel .os { color: var(--ink-3); }

.scale-row { display: flex; gap: 7px; }
.scale-row .opt { flex: 1; justify-content: center; text-align: center; padding: 12px 4px; font-size: 12px; }
.scale-row .opt input { display: none; }
.range-wrap { display: flex; align-items: center; gap: 18px; }
.range-wrap input[type=range] { flex: 1; accent-color: var(--cinnabar); height: 4px; }
.range-val { font-size: 13px; font-weight: 700; color: var(--cinnabar); min-width: 82px; text-align: right; font-variant-numeric: tabular-nums; }

.holland-item { padding: 18px 0; border-bottom: 1px solid var(--line-2); }
.holland-item:last-child { border-bottom: 0; padding-bottom: 0; }
.holland-q { font-size: 13.8px; margin-bottom: 12px; color: var(--ink-2); line-height: 1.8; }
.holland-q b { font-size: 10.5px; color: var(--muted); font-weight: 400; margin-right: 10px; letter-spacing: .06em; }

.survey-actions { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 6px 0 72px; }
.survey-actions .right { display: flex; gap: 10px; margin-left: auto; }
.save-note { font-size: 11px; color: var(--muted); letter-spacing: .06em; }

/* ---------- 报告（纸域） ---------- */
.report-head { padding: 56px 0 26px; border-bottom: 2px solid var(--ink); margin-bottom: 34px; }
.report-head .slogan { font-size: 10.5px; letter-spacing: .34em; color: var(--seal); margin-bottom: 16px; font-weight: 700; }
.report-head .kicker { font-size: 10px; letter-spacing: .24em; color: var(--muted); margin-bottom: 14px; }
.report-head h1 { font-family: var(--serif); font-size: clamp(25px, 3.2vw, 34px); letter-spacing: .01em; margin-bottom: 18px; line-height: 1.35; color: var(--ink); }
.report-head .meta { display: flex; flex-wrap: wrap; gap: 5px 0; font-size: 11.5px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.report-head .meta span { padding-right: 14px; margin-right: 14px; border-right: 1px solid var(--line); }
.report-head .meta span:last-child { border-right: 0; }

.verdict { display: flex; align-items: center; gap: 30px; padding: 30px 0; border-bottom: 1px solid var(--line); margin-bottom: 40px; }
.verdict .score-ring { flex: none; width: 104px; height: 104px; position: relative; }
.verdict .score-ring svg { transform: rotate(-90deg); display: block; }
.verdict .score-ring .val { position: absolute; inset: 0; display: grid; place-items: center; font-family: var(--serif); font-size: 30px; font-weight: 700; color: var(--cinnabar); font-variant-numeric: tabular-nums; }
.verdict .score-ring .val span { font-size: 9.5px; color: var(--muted); margin-left: 3px; letter-spacing: .1em; font-weight: 500; font-family: var(--sans); }
.verdict .vbody h2 { font-family: var(--serif); font-size: 20px; margin-bottom: 8px; color: var(--ink); }
.verdict .vbody p { margin: 0; font-size: 13.2px; line-height: 1.95; color: var(--ink-2); }
.vbadge { display: inline-block; font-size: 10px; font-weight: 700; padding: 4px 12px; letter-spacing: .16em; border: 1px solid var(--ink); margin-bottom: 12px; }

.sec { margin-bottom: 42px; }
.sec-title { display: flex; align-items: baseline; gap: 12px; font-family: var(--serif); font-size: 18px; padding-bottom: 12px; border-bottom: 2px solid var(--ink); margin-bottom: 6px; color: var(--ink); }
.sec-title .idx { font-size: 11px; color: var(--cinnabar); flex: none; letter-spacing: .12em; font-weight: 700; }
.sec-sub { font-size: 11.8px; color: var(--muted); margin: 12px 0 18px; line-height: 1.9; }

.panel { background: var(--white); border: 1px solid var(--line); border-radius: 3px; padding: 28px 30px; box-shadow: var(--sh-1); }
.panel + .panel { margin-top: 14px; }
.panel h4 { font-size: 14px; margin-bottom: 10px; color: var(--ink); }
.panel p:last-child { margin-bottom: 0; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }

.dim-list { display: grid; gap: 15px; }
.dim { display: grid; grid-template-columns: 110px 1fr 42px; align-items: center; gap: 14px; }
.dim .dn { font-size: 12.5px; color: var(--ink-2); }
.dim .dtrack { height: 8px; background: var(--line-2); overflow: hidden; }
.dim .dtrack > i { display: block; height: 100%; background: var(--grad); transition: width .8s cubic-bezier(.2, .8, .2, 1); }
.dim .dv { font-size: 13px; font-weight: 700; text-align: right; font-variant-numeric: tabular-nums; }

table.tb { width: 100%; border-collapse: collapse; font-size: 13px; }
table.tb th, table.tb td { text-align: left; padding: 11px 12px; border-bottom: 1px solid var(--line-2); vertical-align: top; line-height: 1.8; }
table.tb th { font-size: 10px; font-weight: 700; color: var(--muted); letter-spacing: .14em; border-bottom: 1.5px solid var(--ink); white-space: nowrap; }
table.tb tr:last-child td { border-bottom: 0; }
table.tb td.nw { white-space: nowrap; }
/* 精确到秒的时间列：略小字号 + 等宽数字，避免撑破表格 */
table.tb td.when { white-space: nowrap; font-size: 12px; font-variant-numeric: tabular-nums; color: var(--ink-2); letter-spacing: -.1px; }
@media (max-width: 720px) { table.tb td.when { font-size: 12.5px; } }

.chain { display: grid; grid-template-columns: 1fr 1fr 1fr; border: 1px solid var(--line); border-radius: 3px; overflow: hidden; background: var(--white); }
.chain .node { padding: 22px 20px; }
.chain .node + .node { border-left: 1px solid var(--line); }
.chain .node h5 { margin: 0 0 12px; font-size: 9.5px; letter-spacing: .2em; color: var(--muted); font-weight: 700; }
.chain .node ul { margin: 0; padding-left: 15px; font-size: 12.3px; color: var(--ink-2); }
.chain .node li { margin-bottom: 5px; line-height: 1.75; }
.chain .node.mid { background: var(--navy-soft); }

.tags { display: flex; flex-wrap: wrap; gap: 6px; }
.tagx { font-size: 11px; padding: 4px 11px; border: 1px solid var(--line); background: var(--white); color: var(--ink-3); white-space: nowrap; max-width: 100%; }
/* v9.4：窄屏下长标签（如「现有渠道：xxx」）允许折行，避免把页面撑出横向滚动条 */
@media (max-width: 560px) { .tagx { white-space: normal; overflow-wrap: anywhere; } }
.tagx.b { border-color: #E3C3B7; background: var(--navy-soft); color: var(--cinnabar); }
.tagx.g { border-color: #C3DCC9; background: #EDF5EF; color: var(--ok); }
.tagx.w { border-color: #E3D3AC; background: #F9F3E2; color: var(--warn); }
.tagx.r { border-color: #E8C6C0; background: #F9ECE9; color: var(--bad); }

.callout { border-left: 3px solid var(--cinnabar); background: var(--navy-soft); padding: 14px 18px; font-size: 13px; color: var(--ink-2); line-height: 1.9; }
.callout.warn { border-left-color: var(--warn); }
.callout.ok { border-left-color: var(--ok); }

.roadmap { padding-left: 26px; border-left: 2px solid var(--line); margin-left: 6px; }
.rm-item { position: relative; margin-bottom: 26px; }
.rm-item:last-child { margin-bottom: 0; }
.rm-item::before { content: ""; position: absolute; left: -31.5px; top: 6px; width: 9px; height: 9px; background: var(--white); border: 2.5px solid var(--cinnabar); border-radius: 50%; }
.rm-item h5 { font-size: 14.5px; margin: 0 0 6px; color: var(--ink); }
.rm-item .when { font-size: 10px; color: var(--cinnabar); font-weight: 700; letter-spacing: .18em; margin-bottom: 8px; }
.rm-item ul { margin: 0; padding-left: 16px; font-size: 12.8px; color: var(--ink-2); }
.rm-item li { line-height: 1.85; }

.pill-row { display: flex; gap: 8px; flex-wrap: wrap; }
.pill { display: inline-flex; align-items: center; gap: 7px; font-size: 11.5px; border: 1px solid var(--line); padding: 6px 13px; color: var(--ink-3); background: var(--white); }
.pill b { color: var(--ink); }

.toolbar { position: sticky; bottom: 0; z-index: 50; margin-top: 12px; background: rgba(242, 238, 225, .94); backdrop-filter: blur(12px); border-top: 1px solid var(--line); padding: 12px 0; }
.toolbar-in { max-width: 840px; margin: 0 auto; padding: 0 32px; display: flex; gap: 9px; align-items: center; }
.toolbar-in .sp { margin-left: auto; }

.empty-state { text-align: center; padding: 110px 20px; }
.empty-state h2 { font-family: var(--serif); font-size: 22px; margin-bottom: 10px; color: var(--ink); }
.empty-state p { color: var(--ink-3); margin-bottom: 26px; }

.light .footer { border-top: 1px solid var(--line); margin-top: 40px; padding: 34px 0 46px; }
.light .footer-in { display: flex; justify-content: space-between; gap: 20px; flex-wrap: wrap; align-items: flex-end; }
.light .footer .f-l { color: var(--muted); }
.light .footer .f-l b { color: var(--ink-2); }
.light .footer .motto { writing-mode: horizontal-tb; height: auto; border: 0; padding: 0; font-size: 13px; letter-spacing: .3em; color: var(--ink-3); }

.toast { position: fixed; left: 50%; bottom: 92px; transform: translateX(-50%) translateY(10px); background: var(--ink); color: #F8F1E4; font-size: 12.5px; padding: 11px 20px; opacity: 0; pointer-events: none; transition: opacity .22s, transform .22s; z-index: 200; box-shadow: var(--sh-2); }
.toast.on { opacity: 1; transform: translateX(-50%) translateY(0); }

.report-sign { display: flex; gap: 30px; flex-wrap: wrap; margin-top: 34px; padding-top: 18px; border-top: 1px solid var(--line); font-size: 12px; color: var(--ink-3); }
.report-sign > div { flex: 1; min-width: 170px; }
.report-sign i { display: inline-block; min-width: 110px; border-bottom: 1px solid var(--ink-3); height: 15px; }
.report-sign .sign-line { display: flex; align-items: flex-end; gap: 8px; }
.report-foot { margin-top: 26px; padding-top: 16px; border-top: 1px solid var(--line); text-align: center; font-size: 11px; color: var(--muted); line-height: 2; }
.report-foot b { color: var(--ink); font-family: var(--serif); }

/* AI 区块 */
.ai-panel { border: 1px solid var(--line) !important; background: var(--white) !important; }
.ai-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; flex-wrap: wrap; }
.ai-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--cinnabar); flex: none; }
.ai-dot.live { animation: pulse 1.4s ease-in-out infinite; }
@keyframes pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: .4; transform: scale(.8); } }
.ai-body { font-size: 13.3px; color: var(--ink-2); line-height: 2; white-space: pre-wrap; }
.ai-models { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.ai-chip { font-size: 11.5px; padding: 6px 13px; cursor: pointer; border: 1px solid var(--line); background: var(--white); color: var(--ink-3); transition: all .15s; }
.ai-chip:hover { border-color: var(--ink-3); color: var(--ink); }
.ai-chip.on { background: var(--grad); border-color: transparent; color: #F8F1E4; }

/* ---------- 管理端 ---------- */
.admin-shell { display: grid; grid-template-columns: 200px 1fr; gap: 36px; align-items: start; }
.side { position: sticky; top: 88px; border: 1px solid var(--line); padding: 20px 18px; background: var(--white); box-shadow: var(--sh-1); }
.side a, .side button { display: flex; align-items: center; gap: 8px; width: 100%; padding: 9px 12px; font-size: 12.5px; color: var(--ink-3); background: none; border: 0; cursor: pointer; font-family: inherit; text-align: left; }
.side a:hover, .side button:hover { color: var(--ink); background: var(--line-2); }
.side .on { color: #F8F1E4; font-weight: 600; background: var(--grad); box-shadow: 0 4px 14px -6px rgba(179, 53, 31, .55); }
.side .grp { font-size: 9.5px; font-weight: 700; letter-spacing: .2em; color: var(--muted); padding: 16px 12px 6px; }
.stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 22px; }
.stat { border: 1px solid var(--line); padding: 22px 22px 24px; background: var(--white); box-shadow: var(--sh-1); }
.stat .k { font-size: 10px; color: var(--muted); font-weight: 700; letter-spacing: .16em; margin-bottom: 12px; }
.stat .v { font-family: var(--serif); font-size: 32px; font-weight: 700; color: var(--ink); line-height: 1; font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.stat .d { font-size: 11px; color: var(--muted); margin-top: 10px; }
.bars { display: flex; align-items: flex-end; gap: 12px; height: 140px; padding-top: 10px; }
.bars .b { flex: 1; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 7px; height: 100%; }
.bars .b i { width: 100%; max-width: 44px; background: var(--grad); min-height: 3px; transition: height .5s cubic-bezier(.2, .8, .2, 1); }
.bars .b span { font-size: 10.5px; color: var(--muted); line-height: 1.6; text-align: center; }

/* 人物案例响应式 */
@media (max-width: 860px) {
  .profile { grid-template-columns: 1fr; gap: 26px; }
  .profile-side { border-right: 0; border-bottom: 1px solid var(--ink); padding: 0 0 20px; display: flex; flex-wrap: wrap; align-items: flex-end; gap: 20px; }
  .p-photo { width: 128px; margin-bottom: 0; flex: none; }
  .p-line { gap: 0 0; }
  .p-step { padding: 0 16px 0 0; margin-right: 4px; border-left: 0; }
  .p-step + .p-step { border-left: 1px solid var(--line); padding-left: 16px; }
}
@media (max-width: 560px) {
  .p-photo { width: 104px; }
  .p-name { font-size: 24px; }
  .p-step { padding: 0 10px 0 0; }
  .p-step + .p-step { padding-left: 10px; }
}

/* ====== 励志线 ====== */
.hero-line {
  margin: -6px 0 30px; padding-left: 18px; border-left: 2px solid var(--cinnabar);
  font-family: var(--serif); font-size: 15px; line-height: 1.95; color: var(--fog);
}
.hero-line em { font-style: normal; color: var(--gold-2); }

/* ====== 02 获奖项目墙 ====== */
.awards { padding: 36px 0 6px; }
.aw-group {
  font-size: 10.5px; letter-spacing: .22em; color: var(--cinnabar);
  padding: 26px 0 10px; border-bottom: 1px solid var(--ink);
}
.aw-group:first-child { padding-top: 0; }
.aw-row + .aw-group { margin-top: 22px; }
.aw-row {
  display: grid; grid-template-columns: 92px minmax(0, 1fr) auto; align-items: baseline;
  gap: 26px; padding: 24px 0; border-bottom: 1px solid var(--line-2);
}
.aw-row:first-child { border-top: 1px solid var(--line); }
.aw-rank {
  font-size: 11px; letter-spacing: .16em; text-align: center; padding: 4px 0;
  border: 1px solid rgba(179, 53, 31, .34); color: var(--cinnabar); white-space: nowrap;
}
.aw-rank.s { border-color: rgba(138, 97, 30, .40); color: var(--warn); }
/* 国赛行：朱砂实心态，一眼看出层级 */
.aw-row.nat .aw-rank { background: var(--cinnabar); border-color: var(--cinnabar); color: var(--cream); }
.aw-row.nat .aw-meta { color: var(--cinnabar); font-weight: 700; letter-spacing: .12em; }
.aw-row.nat .aw-name { font-weight: 700; }
.aw-row.nat { background: linear-gradient(90deg, rgba(179, 53, 31, .045), rgba(179, 53, 31, 0) 62%); }
.aw-name {
  font-family: var(--serif); font-size: 17px; font-weight: 600; line-height: 1.7; color: var(--ink);
}
.aw-name em { font-style: normal; color: var(--cinnabar); }
.aw-meta { font-size: 11px; color: var(--muted); letter-spacing: .06em; white-space: nowrap; }
.aw-verdict {
  margin: 30px 0 0; font-family: var(--serif); font-size: 16px; line-height: 2; color: var(--ink-2);
  border-left: 2px solid var(--cinnabar); padding: 2px 0 2px 20px;
}
.aw-verdict b { color: var(--ink); }

/* ====== 05 赛程时间轴 ====== */
.tl { display: grid; grid-template-columns: 1fr 1fr; gap: 0; padding: 40px 0 0; }
.tl-col { padding: 0 40px; border-left: 1px solid var(--line); }
.tl-col:first-child { border-left: 0; padding-left: 0; }
.tl-col:last-child { padding-right: 0; }
.tl-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
  padding-bottom: 14px; border-bottom: 1px solid var(--ink); margin-bottom: 6px;
}
.tl-head h4 { font-family: var(--serif); font-size: 16.5px; font-weight: 700; color: var(--ink); }
.tl-state {
  font-size: 10px; letter-spacing: .14em; padding: 3px 8px; white-space: nowrap;
  border: 1px solid var(--line); color: var(--muted);
}
.tl-state.now { background: var(--cinnabar); border-color: var(--cinnabar); color: #fff; }
.tl-item {
  position: relative; display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 16px;
  padding: 16px 0 16px 20px; border-bottom: 1px dotted var(--line-2);
}
.tl-item::before {
  content: ""; position: absolute; left: 0; top: 23px; width: 6px; height: 6px; border-radius: 50%;
  border: 1px solid var(--muted); background: var(--paper);
}
.tl-item.now::before { background: var(--cinnabar); border-color: var(--cinnabar); box-shadow: 0 0 0 4px rgba(179, 53, 31, .12); }
.tl-date { font-family: var(--num); font-size: 11.5px; color: var(--ink-3); letter-spacing: .03em; white-space: nowrap; padding-top: 1px; }
.tl-txt b { display: block; font-size: 13.5px; font-weight: 600; color: var(--ink); margin-bottom: 3px; line-height: 1.5; }
.tl-txt span { font-size: 11.8px; color: var(--ink-3); line-height: 1.85; display: block; }
.tl-note {
  margin: 32px 0 0; padding: 22px 24px; background: var(--card); border-left: 2px solid var(--cinnabar);
  font-size: 13px; line-height: 2; color: var(--ink-2);
}
.tl-note b { color: var(--ink); }

/* ====== 08 常见问题 ====== */
.faq { padding: 28px 0 0; }
.faq-item { border-bottom: 1px solid var(--line-2); }
.faq-item:first-child { border-top: 1px solid var(--line); }
.faq-item summary {
  list-style: none; cursor: pointer; display: flex; gap: 12px; align-items: flex-start;
  padding: 21px 0; font-family: var(--serif); font-size: 15.5px; font-weight: 600;
  color: var(--ink); line-height: 1.6; transition: color .18s;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::before {
  content: "＋"; flex: none; font-family: var(--sans); font-size: 14px; font-weight: 400;
  line-height: 1.74; color: var(--cinnabar);
}
.faq-item[open] summary::before { content: "－"; }
.faq-item summary:hover { color: var(--cinnabar); }
.faq-a { padding: 0 0 24px 28px; font-size: 13.2px; line-height: 2.1; color: var(--ink-2); }
.faq-a b { color: var(--ink); font-weight: 600; }
.faq-a em { font-style: normal; color: var(--cinnabar); }

/* ====== 咨询与组队 ====== */
.contact {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0;
  margin: 44px 0 0; padding: 34px 0 0; border-top: 1px solid var(--ink);
}
.ct-item { padding: 4px 32px 10px; border-left: 1px solid var(--line); }
.ct-item:first-child { border-left: 0; padding-left: 0; }
.ct-item .role { font-size: 10.5px; letter-spacing: .22em; color: var(--cinnabar); margin-bottom: 9px; }
.ct-item h4 { font-family: var(--serif); font-size: 15.5px; font-weight: 700; color: var(--ink); margin-bottom: 10px; }
.ct-item p { font-size: 12.5px; line-height: 1.95; color: var(--ink-3); }
.ct-item a { border-bottom: 1px solid rgba(179, 53, 31, .35); }

/* ====== 免责声明 ====== */
.disclaimer { padding-top: 56px; padding-bottom: 72px; }
.disclaimer h4 {
  font-family: var(--serif); font-size: 15px; font-weight: 700; color: var(--ink);
  padding-bottom: 14px; border-bottom: 1px solid var(--ink); margin-bottom: 20px;
  display: flex; align-items: baseline; gap: 12px;
}
.disclaimer h4 span { font-family: var(--sans); font-size: 10px; letter-spacing: .2em; color: var(--muted); font-weight: 400; }
.disclaimer ol { list-style: none; counter-reset: dc; padding: 0; margin: 0; }
.disclaimer li {
  position: relative; counter-increment: dc; padding: 0 0 14px 30px;
  font-size: 12px; line-height: 1.95; color: var(--ink-3);
}
.disclaimer li::before {
  content: counter(dc); position: absolute; left: 0; top: 1px;
  font-family: var(--num); font-size: 11px; color: var(--cinnabar); letter-spacing: .06em;
}
.disclaimer li b { color: var(--ink-2); font-weight: 600; }

/* ====== 阅读进度 / 无障碍 / 倒计时 / 吸底 CTA ====== */
.skip {
  position: absolute; left: -9999px; top: 0; z-index: 200;
  background: var(--cinnabar); color: var(--cream);
  padding: 10px 18px; font-size: 12px; letter-spacing: .1em;
}
.skip:focus { left: 12px; top: 12px; }

.prog { position: fixed; left: 0; top: 0; right: 0; height: 2px; z-index: 95; pointer-events: none; }
.prog i { display: block; height: 100%; width: 0; background: var(--cinnabar); transition: width .1s linear; }

:focus-visible { outline: 2px solid var(--cinnabar); outline-offset: 3px; }

.cd-pill {
  display: inline-flex; align-items: center; gap: 9px;
  margin: 0 0 26px; padding: 7px 14px 7px 12px;
  border: 1px solid var(--hair-2); font-size: 11.5px; letter-spacing: .06em;
  color: var(--fog-2);
}
.cd-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--cinnabar); flex: none; animation: cdPulse 2s ease-in-out infinite; }
@keyframes cdPulse { 0%, 100% { opacity: 1; } 50% { opacity: .25; } }
.cd-pill .cd-k { color: var(--fog-2); }
.cd-pill b { font-family: var(--serif); font-size: 19px; line-height: 1; color: var(--cinnabar); letter-spacing: .02em; }
.cd-pill .cd-u { color: var(--fog-2); }
.cd-pill a { color: var(--gold); border-bottom: 1px solid rgba(198, 161, 91, .45); padding-bottom: 1px; margin-left: 4px; }
.cd-pill a:hover { color: var(--snow); }

.f-qr { display: flex; align-items: center; gap: 10px; }
.f-qr img { width: 86px; height: 86px; background: var(--cream); padding: 6px; display: block; }
.f-qr span { font-size: 9.5px; color: var(--fog-2); letter-spacing: .12em; line-height: 1.9; }

.m-cta {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 80;
  display: none; gap: 10px; padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
  background: rgba(13, 12, 9, .95); border-top: 1px solid rgba(179, 53, 31, .55);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  transform: translateY(110%); transition: transform .28s cubic-bezier(.2, .8, .2, 1);
}
.m-cta.on { transform: translateY(0); }
.m-cta a {
  flex: 1; text-align: center; padding: 12px 8px; font-size: 13px; letter-spacing: .08em;
  border: 1px solid rgba(233, 226, 210, .3); color: var(--snow);
}
.m-cta a:first-child { background: var(--cinnabar); border-color: var(--cinnabar); color: var(--cream); font-weight: 600; }
.m-cta-x {
  flex: none; width: 38px; border: 0; background: transparent; color: var(--fog-2);
  font-size: 20px; line-height: 1; cursor: pointer;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
  .rv { opacity: 1 !important; transform: none !important; }
}

/* ====== 滚动平滑（无障碍自动降级） ====== */
html { scroll-behavior: smooth; }

/* ====== 八系直达 ====== */
.hero-depts {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2px 6px;
  margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--hair); max-width: 560px;
}
.hd-k { grid-column: 1 / -1; font-size: 10px; letter-spacing: .2em; color: var(--fog-2); margin-bottom: 6px; white-space: nowrap; }
.hero-depts a {
  font-size: 11.5px; letter-spacing: .06em; color: var(--fog); white-space: nowrap;
  padding: 5px 8px; border: 1px solid transparent;
  transition: color .16s, border-color .16s, transform .16s;
}
.hero-depts a:hover { color: var(--gold-2); border-color: var(--hair-2); transform: translateY(-1px); }

/* ====== 回到顶部 ====== */
.to-top {
  position: fixed; right: 22px; bottom: 22px; z-index: 85;
  width: 42px; height: 42px; border: 1px solid var(--hair-2);
  background: rgba(13, 12, 9, .9); color: var(--snow); font-size: 17px; line-height: 1; cursor: pointer;
  opacity: 0; pointer-events: none; transform: translateY(8px);
  transition: opacity .25s, transform .25s, border-color .2s;
}
.to-top.on { opacity: 1; pointer-events: auto; transform: none; }
.to-top:hover { border-color: var(--gold); color: var(--gold-2); }

/* ====== 首屏入场编排 ====== */
@keyframes fadeUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.hero-main .kicker { opacity: 0; animation: fadeUp .6s .08s ease forwards; }
.hero-main .lead { opacity: 0; animation: fadeUp .6s .26s ease forwards; }
.hero-line { opacity: 0; animation: fadeUp .6s .4s ease forwards; }
.cd-pill { opacity: 0; animation: fadeUp .6s .5s ease forwards; }
.hero-actions { opacity: 0; animation: fadeUp .6s .58s ease forwards; }
.hero-logos { opacity: 0; animation: fadeUp .6s .66s ease forwards; }
.hero-depts { opacity: 0; animation: fadeUp .6s .74s ease forwards; }
.hero-art { opacity: 0; transform: translateY(16px) rotate(.8deg); animation: heroArt .95s .4s cubic-bezier(.2, .8, .2, 1) forwards; }
@keyframes heroArt { to { opacity: 1; transform: none; } }

/* ====== 子项交错浮现（.rv 区域内） ====== */
.rv .sg > * {
  opacity: 0; transform: translateY(14px);
  transition: opacity .55s ease, transform .55s cubic-bezier(.2, .8, .2, 1);
}
.rv.in .sg > * { opacity: 1; transform: none; }
.rv.in .sg > *:nth-child(2) { transition-delay: .05s; }
.rv.in .sg > *:nth-child(3) { transition-delay: .10s; }
.rv.in .sg > *:nth-child(4) { transition-delay: .15s; }
.rv.in .sg > *:nth-child(5) { transition-delay: .20s; }
.rv.in .sg > *:nth-child(6) { transition-delay: .25s; }
.rv.in .sg > *:nth-child(7) { transition-delay: .30s; }
.rv.in .sg > *:nth-child(8) { transition-delay: .35s; }
.rv.in .sg > *:nth-child(9) { transition-delay: .40s; }
.rv.in .sg > *:nth-child(10) { transition-delay: .45s; }

/* ====== 微交互 ====== */
.hero-logos .chip { transition: transform .2s ease, border-color .2s ease; }
.hero-logos .chip:hover { transform: translateY(-2px); }
.f-qr img { transition: transform .22s ease; }
.f-qr:hover img { transform: scale(1.07); }
.faq-item summary { transition: color .18s; }
.faq-item summary:hover { color: var(--cinnabar); }
.aw-row { transition: background .22s ease; }
.aw-row:hover { background: rgba(179, 53, 31, .04); }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .hero-main .kicker, .hero-main .lead, .hero-line, .cd-pill, .hero-actions,
  .hero-logos, .hero-depts, .hero-art { opacity: 1 !important; transform: none !important; animation: none !important; }
  .rv .sg > * { opacity: 1 !important; transform: none !important; }
}

/* ---------- 打印 ---------- */
@media print {
  @page { size: A4; margin: 15mm 15mm 16mm; }
  body { background: #fff !important; font-size: 10.5pt; line-height: 1.65; color: #000; }
  .topbar, .toolbar, .toast, .no-print, .footer, .side, .prog, .m-cta, .skip, .f-qr, .cd-pill { display: none !important; }
  .wrap, .wrap-sm { max-width: none; padding: 0; }
  .report-head { padding-top: 0; border-bottom: 1.5pt solid #000; }
  .panel, .verdict, .chain .node, .stat, .ai-panel { box-shadow: none !important; border-color: #bbb !important; background: #fff !important; border-radius: 0; }
  .sec { margin-bottom: 15px; }
  .panel, .verdict, .chain, .roadmap, .rm-item, .stat, .ai-panel { break-inside: avoid; }
  .sec-title { font-size: 12pt; border-bottom: 1pt solid #000; }
  h1 { font-size: 18pt; }
  .hero h1 .hl > i { transform: none !important; animation: none !important; }
  a { color: #000; text-decoration: none; }
  .tagx, .pill, .vbadge { border: 1px solid #bbb !important; background: #f6f6f6 !important; color: #000 !important; }
  .dim .dtrack { border: 1px solid #bbb; background: #fff; }
  .dim .dtrack > i { print-color-adjust: exact; -webkit-print-color-adjust: exact; }
  .callout { background: #f7f7f7 !important; border-left-color: #777; }
  .score-ring svg circle { print-color-adjust: exact; -webkit-print-color-adjust: exact; }
}

/* ---------- 响应式 ---------- */
@media (max-width: 1060px) {
  .hero-in { grid-template-columns: minmax(0, 1fr); gap: 52px; }
  .hero-side { display: none; }
  .ink .hero { padding: 64px 0 72px; }
  .ink .hero::before { font-size: 300px; top: auto; bottom: -12%; }
  .hero-art { max-width: 540px; }
  .report-split { grid-template-columns: 1fr; gap: 34px; }
  .admin-shell { grid-template-columns: 1fr; }
  .side { position: static; }
  .stat-grid { grid-template-columns: 1fr 1fr; }
  .footer-in { grid-template-columns: 1fr auto; }
  .footer .f-r { display: none; }
}
@media (max-width: 860px) {
  .wrap { padding: 0 22px; }
  .topbar-in { padding: 0 22px; height: 62px; gap: 12px; }
  .logo-text i { font-size: 15px; letter-spacing: .2em; }
  .logo-text small { display: none; }
  .logo-mark { width: 34px; height: 34px; font-size: 16px; }
  .topbar nav { gap: 0; }
  .topbar nav a { font-size: 12px; padding: 6px 9px; letter-spacing: .02em; }
  .hero h1 { font-size: 34px; }
  .hero .lead { font-size: 14.5px; }
  .duo, .three, .notes, .hard, .grid-2, .grid-3, .chain { grid-template-columns: 1fr; }
  .three .col, .hard .col, .note-item { border-left: 0; padding-left: 0; padding-right: 0; }
  .ink .sec-band, .paper .sec-band { padding: 68px 0 0; }
  .sec-head { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: baseline; column-gap: 12px; row-gap: 0; }
  .sec-head .no { grid-row: 1; grid-column: 1; font-size: 12px; line-height: 1.4; letter-spacing: .2em; -webkit-text-stroke: 0; color: var(--cinnabar); font-variant-numeric: tabular-nums; }
  .ink .sec-head .no { color: var(--gold); }
  .sec-head .note { grid-row: 1; grid-column: 2; text-align: left; padding: 0; font-size: 10px; letter-spacing: .16em; }
  .sec-head .hgroup { grid-row: 2; grid-column: 1 / -1; margin-top: 10px; }
  .sec-head h2 { font-size: 22px; line-height: 1.45; letter-spacing: .01em; }
  .toc-card { margin-right: 10px; box-shadow: 8px 8px 0 rgba(24, 21, 14, .12); }
  .p-line { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 14px; }
  .p-step, .p-step + .p-step { padding: 0; border: 0; }
  .p-step b { font-size: 12.5px; }
  .p-step span { font-size: 11px; margin-top: 4px; }
  .q-card { padding: 28px 22px; }
  .panel { padding: 22px 20px; }
  .verdict { flex-direction: column; align-items: flex-start; gap: 16px; }
  .report-head { padding-top: 34px; }
  .dim { grid-template-columns: 92px 1fr 40px; gap: 10px; }
  .toolbar-in { flex-wrap: wrap; }
  table.tb { font-size: 12px; }
  table.tb th, table.tb td { padding: 9px 7px; }
  .paper-card { padding: 24px 22px 20px; }
  .pc-body { gap: 14px; }
  .pc-score b { font-size: 42px; }
  .pc-score { padding-right: 14px; }
  .pc-seal { right: -10px; bottom: -18px; width: 64px; height: 64px; font-size: 12px; }
  .duo-card { padding: 28px 24px 26px; }
  .c-item { padding-right: 18px; margin-right: 18px; }
  .c-item b { font-size: 26px; }
  .ink .footer { padding: 38px 0 48px; }
  .footer .motto { font-size: 13px; }
}

/* 手机端顶栏：logo 独占一行 + 导航横滑第二行 */
@media (max-width: 720px) {
  .topbar-in { height: auto; padding: 11px 18px 0; flex-wrap: wrap; align-items: center; gap: 0; }
  .logo { gap: 10px; }
  .logo-mark { width: 30px; height: 30px; font-size: 15px; border-radius: 0; }
  .logo-text i { font-size: 16px; letter-spacing: .2em; }
  .logo-text small { display: block; font-size: 8.5px; letter-spacing: .03em; margin-top: 2px; white-space: nowrap; }
  .topbar nav {
    order: 2; width: 100%; margin: 9px -18px 0; padding: 9px 18px;
    overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch;
    scrollbar-width: none; gap: 22px; border-top: 1px solid var(--hair);
  }
  .topbar nav::-webkit-scrollbar { display: none; }
  .light .topbar nav { border-top-color: var(--line); }
  .topbar nav a { font-size: 12.5px; letter-spacing: .05em; padding: 0; }
  .ink .topbar nav a.on { color: var(--gold-2); box-shadow: inset 0 -1px 0 var(--gold); padding-bottom: 4px; }
  .light .topbar nav a.on { color: var(--cinnabar); box-shadow: inset 0 -1px 0 var(--cinnabar); padding-bottom: 4px; }
  .counter-in { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 0; padding-top: 24px; padding-bottom: 22px; }
  .c-item { padding: 0; margin: 0; border-right: 0; gap: 9px; }
  .c-item b { font-size: 26px; }
  .c-link { grid-column: 1 / -1; margin: 2px 0 0; }
  .ink .hero { padding: 30px 0 46px; }
  .hero-main .kicker {
    border: 0; padding: 0; margin-bottom: 20px; gap: 10px;
    font-size: 10.5px; letter-spacing: .12em; color: var(--fog-2);
  }
  .hero-main .kicker::before { width: 20px; }
  .hero h1 { font-size: 32px; line-height: 1.36; margin-bottom: 16px; }
  .hero .lead { font-size: 15px; line-height: 1.95; margin-bottom: 26px; color: rgba(233, 226, 210, .87); }
  .hero-actions { gap: 10px; margin-bottom: 0; }
  .hero-actions .btn { flex: 1 1 0; min-width: 0; padding: 14px 8px; font-size: 13px; letter-spacing: .06em; }
  .hero-actions .link-more {
    width: 100%; margin-top: 6px; padding-top: 14px; border-top: 1px solid var(--hair);
    font-size: 12px; letter-spacing: .1em; color: var(--fog-2);
  }
  .hero-logos { margin-top: 26px; gap: 10px; }
  .hero-logos .chip { padding: 9px 13px; font-size: 11px; letter-spacing: .04em; }
  .hero-art { margin-top: 10px; }
  .profile-side { gap: 16px; }
  .p-role { line-height: 1.9; }
  .footer .motto { height: auto; white-space: nowrap; font-size: 13px; letter-spacing: .34em; padding: 12px 14px; }
}

@media (max-width: 560px) {
  .opt-grid.c2, .opt-grid.c3 { grid-template-columns: 1fr; }
  .scale-row .opt { font-size: 11px; padding: 10px 2px; }
  .hero h1 { font-size: 29px; }
  .hero-main .kicker { font-size: 10px; letter-spacing: .1em; }
  .c-item span { font-size: 10.5px; }
  .c-link { margin-left: 0; width: auto; }
  .stat-grid { grid-template-columns: 1fr; }
  .report-head .meta span { padding-right: 10px; margin-right: 10px; }
  .step-chip { font-size: 11px; padding: 5px 10px; }
  .manifesto { padding: 64px 18px 68px; }
  .manifesto p { font-size: 21px; }
  .footer-in { grid-template-columns: 1fr; justify-items: center; text-align: center; }
  .footer .f-r { display: none; }
  .footer .motto { font-size: 12px; letter-spacing: .3em; }
  .m-cta { display: flex; }
  .f-qr { gap: 8px; }
  .f-qr img { width: 78px; height: 78px; padding: 5px; }
  .ink .footer { padding-bottom: 80px; }
  .f-qr span { font-size: 9px; }
  .cd-pill { font-size: 10.5px; gap: 7px; padding: 6px 11px; margin-bottom: 22px; flex-wrap: wrap; }
  .cd-pill b { font-size: 17px; }
  .to-top { right: 14px; bottom: 84px; width: 38px; height: 38px; font-size: 15px; }
  .hero-depts { gap: 4px 2px; margin-top: 18px; }
  .hd-k { margin-right: 8px; }
  .hero-depts a { font-size: 10.5px; padding: 3px 8px; }
  /* 新增模块 · 手机端 */
  .awards .aw-row { grid-template-columns: auto minmax(0, 1fr); gap: 10px 12px; padding: 18px 0; }
  .aw-rank { grid-column: 1; grid-row: 1; justify-self: start; padding: 3px 9px; }
  .aw-meta { grid-column: 2; grid-row: 1; text-align: right; align-self: center; white-space: normal; }
  .aw-name { grid-column: 1 / -1; grid-row: 2; font-size: 15.5px; }
  .aw-verdict { font-size: 14.5px; line-height: 1.95; padding: 2px 0 2px 14px; }
  .tl { grid-template-columns: minmax(0, 1fr); gap: 38px; }
  .tl-col { padding: 0; border-left: 0; }
  .tl-item { grid-template-columns: minmax(0, 1fr); gap: 5px; padding-left: 16px; }
  .tl-date { font-size: 10.5px; letter-spacing: .08em; color: var(--muted); }
  .tl-head h4 { font-size: 15px; }
  .tl-note { padding: 18px 16px; font-size: 12.5px; }
  .faq-item summary { font-size: 14.5px; padding: 18px 0; gap: 10px; }
  .faq-a { padding-left: 22px; font-size: 12.8px; }
  .contact { grid-template-columns: minmax(0, 1fr); margin-top: 34px; padding-top: 26px; }
  .ct-item { padding: 18px 0; border-left: 0; border-top: 1px solid var(--line-2); }
  .ct-item:first-child { border-top: 0; padding-top: 0; }
  .hero-line { font-size: 14px; line-height: 1.9; padding-left: 12px; margin: -2px 0 24px; }
  .aw-group { padding-top: 20px; font-size: 10px; letter-spacing: .16em; }
  .disclaimer { padding-top: 40px; padding-bottom: 56px; }
  .disclaimer li { font-size: 11.5px; line-height: 1.95; padding-left: 24px; }
}

/* ============================================================
   v78：报告编号卡 · 核验页 · 系部排行 · 命题墙 · 新工具卡
   ============================================================ */

/* ---- 报告编号验真卡（报告页，浅色域，随打印保留） ---- */
.rid-card {
  display: flex; align-items: center; gap: 22px;
  margin: 18px 0 8px; padding: 16px 20px;
  background: var(--card); border: 1px dashed var(--cinnabar);
  border-radius: 4px;
}
.rid-main { flex: 1; min-width: 0; }
.rid-k { font-size: 10.5px; letter-spacing: .18em; color: var(--cinnabar); font-weight: 700; margin-bottom: 5px; }
.rid-no { font-family: ui-monospace, "SF Mono", Consolas, monospace; font-size: 21px; font-weight: 700; letter-spacing: .1em; color: var(--ink); }
.rid-tip { font-size: 11.5px; color: var(--ink-4); line-height: 1.7; margin-top: 6px; }
.rid-qr { flex: none; width: 96px; height: 96px; display: flex; align-items: center; justify-content: center; background: #fff; border: 1px solid var(--line); }
.rid-qr img { display: block; }
.rid-link { font-size: 12px; color: var(--cinnabar); text-decoration: underline; }

/* ---- 核验页 / 命题墙页 共用头部 ---- */
.vf-head { padding: 40px 0 8px; }
.vf-head .kicker { font-size: 11px; letter-spacing: .22em; color: var(--cinnabar); font-weight: 700; margin-bottom: 10px; }
.vf-head h1 { font-family: var(--serif); font-size: 30px; color: var(--ink); margin-bottom: 12px; letter-spacing: .02em; }
.vf-head .sub { font-size: 13.5px; color: var(--ink-3); line-height: 1.85; max-width: 640px; }

.vf-box { display: flex; gap: 10px; margin: 22px 0 18px; }
.vf-box input {
  flex: 1; min-width: 0; padding: 13px 16px; font-size: 16px;
  font-family: ui-monospace, "SF Mono", Consolas, monospace; letter-spacing: .08em;
  background: var(--white); border: 1px solid var(--line); border-radius: 4px; color: var(--ink);
}
.vf-box input:focus { outline: 2px solid var(--cinnabar); outline-offset: 1px; border-color: var(--cinnabar); }

.vf-card { background: var(--card); border: 1px solid var(--line); border-radius: 6px; padding: 24px 24px 20px; margin-bottom: 20px; }
.vf-card h3 { font-family: var(--serif); font-size: 19px; color: var(--ink); margin: 10px 0 8px; }
.vf-card p { font-size: 13px; color: var(--ink-3); line-height: 1.8; }
.vf-badge { display: inline-block; font-size: 11px; font-weight: 700; letter-spacing: .14em; padding: 4px 10px; border-radius: 3px; }
.vf-card.ok .vf-badge { background: #E4F0E9; color: var(--ok); }
.vf-card.bad .vf-badge { background: #F7E4E0; color: var(--bad); }
.vf-card.warn .vf-badge { background: #F5EAD3; color: var(--warn); }
.vf-card.wait .vf-badge { background: var(--line-2); color: var(--ink-3); }
.vf-rows { margin: 14px 0 4px; border-top: 1px solid var(--line-2); }
.vf-row { display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-bottom: 1px solid var(--line-2); font-size: 13.5px; }
.vf-row span { color: var(--ink-4); flex: none; }
.vf-row b { color: var(--ink); text-align: right; font-weight: 600; }
.vf-row b.mono { font-family: ui-monospace, Consolas, monospace; letter-spacing: .06em; }
.vf-status { margin-top: 14px; padding: 10px 14px; border-radius: 4px; font-size: 12.5px; line-height: 1.7; }
.vf-status.ok { background: #E4F0E9; color: var(--ok); }
.vf-status.warn { background: #F5EAD3; color: var(--warn); }
.vf-safe { margin-top: 12px; font-size: 11.5px !important; color: var(--ink-4) !important; }

.vf-note { margin: 8px 0 60px; padding: 20px 22px; background: var(--cream); border: 1px solid var(--line-2); border-radius: 6px; }
.vf-note h4 { font-size: 13px; color: var(--ink); margin-bottom: 10px; letter-spacing: .06em; }
.vf-note li { font-size: 12.5px; color: var(--ink-3); line-height: 1.9; list-style: none; padding-left: 14px; position: relative; }
.vf-note li::before { content: '·'; position: absolute; left: 2px; color: var(--cinnabar); }

/* ---- 系部参与排行（首页墨色横带） ---- */
.dept-band { background: var(--inkbg-2); border-top: 1px solid var(--hair); border-bottom: 1px solid var(--hair); padding: 34px 0 38px; }
.db-head { display: flex; align-items: baseline; gap: 16px; margin-bottom: 18px; flex-wrap: wrap; }
.db-k { font-size: 12px; letter-spacing: .2em; color: var(--gold); font-weight: 700; }
.db-note { font-size: 11px; color: var(--fog-2); letter-spacing: .06em; }
.db-row { display: grid; grid-template-columns: 30px 118px minmax(0, 1fr) auto; align-items: center; gap: 14px; padding: 9px 0; border-bottom: 1px solid var(--hair); }
.db-row:last-child { border-bottom: 0; }
.db-no { font-family: var(--serif); font-size: 15px; color: var(--gold-2); text-align: right; }
.db-name { font-size: 13.5px; color: var(--snow); letter-spacing: .04em; }
.db-track { height: 8px; background: rgba(233, 226, 210, .08); border-radius: 4px; overflow: hidden; }
.db-track i { display: block; height: 100%; background: linear-gradient(90deg, var(--cinnabar), var(--gold)); border-radius: 4px; transition: width 1s cubic-bezier(.2, .7, .2, 1); }
.db-n { font-size: 12.5px; color: var(--fog); white-space: nowrap; }
.db-n b { color: var(--gold-2); font-size: 15px; margin-right: 2px; }
.db-n em { font-style: normal; margin-left: 8px; font-size: 11px; color: var(--cinnabar-b); }

/* ---- 新工具卡（首页 ＋ 版块） ---- */
.tool-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.tool-card {
  display: block; border: 1px solid var(--hair); background: var(--inkbg-2);
  padding: 26px 26px 22px; transition: transform .3s, border-color .3s;
}
.tool-card:hover { transform: translateY(-3px); border-color: var(--gold); }
.tc-k { font-size: 10.5px; letter-spacing: .22em; color: var(--cinnabar-b); font-weight: 700; margin-bottom: 12px; }
.tool-card h3 { font-family: var(--serif); font-size: 19px; color: var(--snow); line-height: 1.5; margin-bottom: 10px; }
.tool-card p { font-size: 12.5px; color: var(--fog-2); line-height: 1.85; }
.tc-go { display: inline-block; margin-top: 14px; font-size: 12.5px; color: var(--gold-2); letter-spacing: .08em; }

/* ---- 命题墙页 ---- */
.tp-filters { display: flex; flex-wrap: wrap; gap: 8px; margin: 20px 0 18px; }
.tp-chip {
  border: 1px solid var(--line); background: var(--white); color: var(--ink-3);
  font-size: 12.5px; padding: 6px 14px; border-radius: 20px; cursor: pointer; transition: all .2s;
}
.tp-chip:hover { border-color: var(--cinnabar); color: var(--cinnabar); }
.tp-chip.on { background: var(--cinnabar); border-color: var(--cinnabar); color: #fff; }
.tp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 26px; }
.tp-card { background: var(--card); border: 1px solid var(--line); border-radius: 6px; padding: 18px 20px 16px; transition: box-shadow .25s, transform .25s; }
.tp-card:hover { box-shadow: 0 6px 20px rgba(24, 21, 14, .08); transform: translateY(-2px); }
.tp-top { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; flex-wrap: wrap; }
.tp-id { font-family: ui-monospace, Consolas, monospace; font-size: 11px; color: var(--cinnabar); font-weight: 700; letter-spacing: .08em; }
.tp-ind { font-size: 10.5px; background: var(--navy-soft); color: var(--brand); padding: 2px 8px; border-radius: 3px; }
.tp-dept { font-size: 10.5px; color: var(--ink-4); margin-left: auto; }
.tp-card h3 { font-family: var(--serif); font-size: 16.5px; color: var(--ink); line-height: 1.55; margin-bottom: 4px; }
.tp-org { font-size: 11.5px; color: var(--ink-4); margin-bottom: 10px; }
.tp-card p { font-size: 12.8px; color: var(--ink-3); line-height: 1.85; }
.tp-fit { margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--line); font-size: 11.8px; color: var(--brand); line-height: 1.7; }
.tp-note { margin: 0 0 60px; padding: 22px 24px; background: var(--cream); border: 1px solid var(--line-2); border-radius: 6px; }
.tp-note h4 { font-size: 13px; color: var(--ink); margin-bottom: 10px; letter-spacing: .06em; }
.tp-note ol { padding-left: 18px; }
.tp-note li { font-size: 12.8px; color: var(--ink-3); line-height: 2; }
.tp-note a { color: var(--cinnabar); text-decoration: underline; }
.tp-src { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--line-2); font-size: 11.5px; color: var(--ink-4); line-height: 1.85; }

/* ---- 浅色页页脚 ---- */
.light-foot { border-top: 1px solid var(--line); margin-top: 20px; padding: 26px 0 90px; font-size: 11.5px; color: var(--ink-4); letter-spacing: .06em; line-height: 2; }

/* ---- 问卷「清空重填」 ---- */
.reset-link { color: var(--cinnabar); text-decoration: underline; font-size: inherit; }

@media (max-width: 760px) {
  .rid-card { gap: 14px; padding: 14px 16px; }
  .rid-no { font-size: 17px; }
  .rid-qr { width: 80px; height: 80px; }
  .rid-qr img { width: 80px !important; height: 80px !important; }
  .vf-head h1 { font-size: 24px; }
  .vf-box { flex-direction: column; }
  .db-row { grid-template-columns: 24px 96px minmax(0, 1fr); gap: 8px 10px; }
  .db-n { grid-column: 2 / -1; padding-left: 0; }
  .tool-grid { grid-template-columns: 1fr; }
  .tp-grid { grid-template-columns: 1fr; }
}

@media print {
  .rid-tip { font-size: 10px; }
}

/* ============================================================
   v79：入口确认层 · 日期天气条 · 励志横幅 · 政策 · 院校墙
   ============================================================ */

/* ---- 入口确认层 ---- */
.gate {
  position: fixed; inset: 0; z-index: 1000;
  display: flex; align-items: center; justify-content: center;
  background: var(--inkbg);
  padding: 24px; overflow-y: auto;
  opacity: 0; transition: opacity .6s ease;
}
.gate.show { opacity: 1; }
.gate.bye { opacity: 0; transform: translateY(-26px); transition: opacity .7s ease, transform .7s ease; pointer-events: none; }
body.gate-lock { overflow: hidden; }

.gate-ink { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.gate-ink i {
  position: absolute; border-radius: 50%;
  background: radial-gradient(circle, rgba(179,53,31,.16), transparent 62%);
  animation: gateDrift 14s ease-in-out infinite;
}
.gate-ink i:nth-child(1) { width: 46vmax; height: 46vmax; left: -14vmax; top: -12vmax; }
.gate-ink i:nth-child(2) { width: 38vmax; height: 38vmax; right: -10vmax; bottom: -12vmax; animation-delay: -5s; background: radial-gradient(circle, rgba(198,161,91,.14), transparent 62%); }
.gate-ink i:nth-child(3) { width: 26vmax; height: 26vmax; left: 52%; top: 58%; animation-delay: -9s; background: radial-gradient(circle, rgba(233,226,210,.07), transparent 60%); }
@keyframes gateDrift {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(3vmax, -2vmax) scale(1.08); }
}

.gate-card {
  position: relative; max-width: 560px; width: 100%;
  background: var(--paper); color: var(--ink);
  border: 1px solid rgba(198,161,91,.4);
  padding: 46px 44px 34px; text-align: center;
  box-shadow: 0 30px 80px rgba(0,0,0,.5);
  opacity: 0; transform: translateY(36px) scale(.96);
  transition: opacity .8s cubic-bezier(.2,.7,.2,1) .15s, transform .8s cubic-bezier(.2,.7,.2,1) .15s;
}
.gate.show .gate-card { opacity: 1; transform: none; }
.gate-card::before {
  content: ''; position: absolute; inset: 8px;
  border: 1px solid rgba(179,53,31,.28); pointer-events: none;
}
.gate-kicker { font-size: 11px; letter-spacing: .24em; color: var(--cinnabar); font-weight: 700; }
.gate-card h2 {
  font-family: var(--serif); font-size: clamp(26px, 5vw, 36px);
  margin: 14px 0 10px; letter-spacing: .04em; color: var(--ink);
}
.gate-card h2 em { color: var(--cinnabar); font-style: normal; }
.gate-quote {
  font-size: 14px; color: var(--ink-3); min-height: 22px;
  transition: opacity .3s ease, transform .3s ease;
}
.gate-quote.swap { opacity: 0; transform: translateY(6px); }

.gate-seal {
  position: absolute; top: -26px; right: -18px;
  width: 76px; height: 76px; border-radius: 10px;
  background: var(--cinnabar); color: #fff;
  font-family: var(--serif); font-size: 21px; line-height: 1.25;
  display: flex; align-items: center; justify-content: center; text-align: center;
  transform: rotate(8deg) scale(2.4); opacity: 0;
  box-shadow: 0 6px 18px rgba(179,53,31,.4);
}
.gate-seal.stamp { animation: stampDown .5s cubic-bezier(.3,1.6,.4,1) forwards; }
@keyframes stampDown {
  0% { transform: rotate(18deg) scale(2.4); opacity: 0; }
  60% { transform: rotate(6deg) scale(.94); opacity: 1; }
  100% { transform: rotate(8deg) scale(1); opacity: 1; }
}

.gate-rules { margin: 24px 0 6px; text-align: left; }
.gr-k { font-size: 11.5px; letter-spacing: .16em; color: var(--gold-2); font-weight: 700; margin-bottom: 10px; }
.gate-rules ol { margin: 0; padding: 0 0 0 22px; }
.gate-rules li { font-size: 13px; line-height: 1.95; color: var(--ink-2); }
.gate-rules li b { color: var(--cinnabar); }
.gate-actions { margin-top: 22px; display: flex; flex-direction: column; gap: 12px; align-items: center; }
.gate-actions .btn { width: 100%; max-width: 300px; }
.gate-leave { background: none; border: 0; font-size: 12.5px; color: var(--ink-4); cursor: pointer; text-decoration: underline; text-underline-offset: 4px; }
.gate-leave:hover { color: var(--cinnabar); }
.gate-foot { margin-top: 18px; font-size: 11px; color: var(--ink-4); letter-spacing: .1em; }

/* ---- 日期天气条 ---- */
.datebar { background: var(--inkbg-2); border-bottom: 1px solid var(--hair); }
.datebar-in {
  display: flex; align-items: center; gap: 10px 22px; flex-wrap: wrap;
  padding: 8px 40px; font-size: 12px; color: var(--fog-2); letter-spacing: .05em;
}
.db-date { color: var(--gold-2); font-weight: 600; }
/* v9.5：首页日期栏的实时时钟，精确到秒 */
.db-clock { color: var(--gold-2); font-weight: 600; font-variant-numeric: tabular-nums; letter-spacing: .06em; }
.db-clock::before { content: "·"; margin-right: 9px; color: var(--fog); opacity: .6; font-weight: 400; }
.db-weather { color: var(--fog); }
.db-hello { margin-left: auto; color: var(--fog-2); }

/* ---- 励志横幅内的激励语 ---- */
.ticker .motto { color: var(--gold-2); font-weight: 700; }
.ticker .motto::before { content: '✦ '; color: var(--cinnabar-b); }

/* ---- 政策版块 ---- */
.policy { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.pol-col { border: 1px solid var(--line); background: var(--card); padding: 26px 26px 20px; }
.pol-col.local { border-color: rgba(179,53,31,.35); background: linear-gradient(180deg, #FBF6EE, var(--card)); }
.pol-tag { display: inline-block; font-size: 10.5px; letter-spacing: .2em; font-weight: 700; color: #fff; background: var(--inkbg); padding: 4px 10px; border-radius: 3px; margin-bottom: 14px; }
.pol-col.local .pol-tag { background: var(--cinnabar); }
.pol-col h4 { font-family: var(--serif); font-size: 18px; color: var(--ink); margin-bottom: 12px; }
.pol-col ul { margin: 0; padding: 0; list-style: none; }
.pol-col li { font-size: 13px; color: var(--ink-3); line-height: 1.9; padding: 8px 0 8px 16px; border-top: 1px dashed var(--line-2); position: relative; }
.pol-col li::before { content: ''; position: absolute; left: 0; top: 17px; width: 6px; height: 6px; background: var(--gold); }
.pol-col.local li::before { background: var(--cinnabar); }
.pol-col li b { color: var(--ink); }

/* ---- 院校墙 ---- */
.uni-lead { font-size: 14px; color: var(--ink-3); line-height: 1.9; max-width: 660px; margin-bottom: 20px; }
.uni-wall { display: flex; flex-wrap: wrap; gap: 10px; }
.uni {
  font-family: var(--serif); font-size: 14.5px; color: var(--ink);
  border: 1px solid var(--line); background: var(--card);
  padding: 9px 18px; border-radius: 3px;
  transition: all .25s;
}
.uni:hover { border-color: var(--cinnabar); color: var(--cinnabar); transform: translateY(-2px); box-shadow: 0 6px 14px rgba(24,21,14,.08); }

/* ---- 工具卡变三列 ---- */
.tool-grid { grid-template-columns: repeat(3, 1fr); }

@media (max-width: 960px) {
  .tool-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 760px) {
  .gate { padding: 14px; align-items: flex-start; padding-top: 8vh; }
  .gate-card { padding: 34px 22px 26px; }
  .gate-seal { top: -20px; right: -8px; width: 62px; height: 62px; font-size: 17px; }
  .datebar-in { font-size: 11.5px; gap: 6px 14px; padding: 7px 20px; }
  .db-hello { margin-left: 0; flex-basis: 100%; }
  .policy { grid-template-columns: 1fr; }
  .uni { font-size: 13px; padding: 8px 14px; }
}

@media (prefers-reduced-motion: reduce) {
  .gate-ink i { animation: none; }
  .gate-card { transition: none; opacity: 1; transform: none; }
  .gate-seal.stamp { animation: none; transform: rotate(8deg); opacity: 1; }
}

/* ---- 管理端侧栏角标 ---- */
.side-badge {
  display: inline-block; min-width: 18px; padding: 1px 5px; margin-left: 6px;
  background: var(--cinnabar); color: #fff; border-radius: 9px;
  font-size: 10.5px; text-align: center; line-height: 1.4; vertical-align: 1px;
}

/* ---- 教师端 ---- */
.t-hero {
  margin: 40px 0 34px; padding: 34px 34px 28px;
  background: var(--inkbg); color: var(--snow);
  border-left: 4px solid var(--cinnabar);
}
.t-kicker { font-size: 11px; letter-spacing: .22em; color: var(--gold-2); font-weight: 700; margin-bottom: 12px; }
.t-hero h1 { font-family: var(--serif); font-size: clamp(24px, 4vw, 32px); color: var(--snow); margin-bottom: 12px; }
.t-tribute { font-size: 15px; color: var(--fog); line-height: 1.9; min-height: 30px; transition: opacity .25s ease; }
.t-meta { margin-top: 16px; display: flex; align-items: center; gap: 16px; font-size: 12px; color: var(--fog-2); }
.t-shuffle { background: none; border: 1px solid var(--hair); color: var(--gold-2); font-size: 11.5px; padding: 3px 10px; border-radius: 3px; cursor: pointer; }
.t-shuffle:hover { border-color: var(--gold); }
.t-tools { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.t-tool { display: block; border: 1px solid var(--line); background: var(--card); padding: 16px 16px 14px; transition: all .25s; }
.t-tool:hover { border-color: var(--cinnabar); transform: translateY(-2px); }
.t-tool b { display: block; font-size: 14px; color: var(--ink); margin-bottom: 6px; }
.t-tool span { font-size: 12px; color: var(--ink-4); line-height: 1.7; }
@media (max-width: 900px) { .t-tools { grid-template-columns: 1fr 1fr; } }
@media (max-width: 760px) { .t-hero { padding: 26px 20px 22px; } .t-tools { grid-template-columns: 1fr; } }

/* ---- 专家端：项目培育雷达 ---- */
.e-list { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.e-card { border: 1px solid var(--line); background: var(--card); padding: 20px 22px 16px; }
.e-head { display: flex; align-items: flex-start; gap: 14px; margin-bottom: 10px; }
.e-id b { display: block; font-size: 16px; color: var(--ink); }
.e-id span { font-size: 12px; color: var(--ink-4); }
.e-score { margin-left: auto; text-align: center; }
.e-score b { display: block; font-family: var(--num); font-size: 26px; color: var(--cinnabar); line-height: 1; }
.e-score span { font-size: 10.5px; color: var(--ink-4); }
.e-tier { flex: none; font-size: 10.5px; font-weight: 700; letter-spacing: .1em; padding: 3px 9px; border-radius: 3px; }
.e-tier.hot { background: #F7E4E0; color: var(--cinnabar); }
.e-tier.mid { background: #F5EAD3; color: var(--warn); }
.e-tier.low { background: var(--line-2); color: var(--ink-3); }
.e-tier.flag { background: var(--inkbg); color: var(--gold-2); }
.e-diff { font-size: 13.5px; color: var(--ink-2); line-height: 1.8; border-left: 3px solid var(--gold); padding-left: 12px; margin: 10px 0; }
.e-meta { font-size: 11.5px; color: var(--ink-4); margin-bottom: 12px; }
.e-dims { margin: 10px 0; }
.e-dim { display: grid; grid-template-columns: 58px 1fr 26px; align-items: center; gap: 8px; padding: 3px 0; font-size: 11.5px; color: var(--ink-3); }
.e-dim i { height: 5px; background: var(--line-2); border-radius: 3px; overflow: hidden; display: block; }
.e-dim i b { display: block; height: 100%; background: linear-gradient(90deg, var(--gold), var(--cinnabar)); }
.e-dim em { font-style: normal; font-family: var(--num); text-align: right; }
.e-sr { display: grid; gap: 8px; margin-top: 10px; }
.e-s, .e-r { font-size: 12px; line-height: 1.8; }
.e-s k, .e-r k { display: inline-block; font-style: normal; font-size: 10.5px; font-weight: 700; padding: 1px 7px; border-radius: 3px; margin-right: 8px; vertical-align: 1px; }
.e-s k { background: #E4F0E9; color: var(--ok); }
.e-r k { background: #F7E4E0; color: var(--bad); }
.e-s span, .e-r span { color: var(--ink-3); margin-right: 10px; }
.e-warn { margin-top: 10px; padding: 8px 12px; background: #F5EAD3; color: var(--warn); font-size: 11.5px; border-radius: 4px; }
@media (max-width: 900px) { .e-list { grid-template-columns: 1fr; } }

/* ---- 心灵驿站 ---- */
.m-item { border-top: 1px dashed var(--line-2); padding: 16px 0 14px; }
.m-item:first-of-type { border-top: 0; }
.m-q { font-size: 14.5px; color: var(--ink); margin-bottom: 10px; line-height: 1.7; }
.m-opts { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.m-opts button {
  border: 1px solid var(--line); background: var(--white); color: var(--ink-3);
  font-size: 12.5px; padding: 8px 4px; border-radius: 4px; cursor: pointer; transition: all .2s;
}
.m-opts button:hover { border-color: var(--cinnabar); color: var(--cinnabar); }
.m-opts button.on { background: var(--cinnabar); border-color: var(--cinnabar); color: #fff; }
.m-score-row { display: flex; gap: 26px; align-items: center; }
.m-score { text-align: center; flex: none; }
.m-score b { display: block; font-family: var(--num); font-size: 46px; color: var(--cinnabar); line-height: 1; }
.m-score span { font-size: 11px; color: var(--ink-4); }
.m-level { font-family: var(--serif); font-size: 22px; margin-bottom: 8px; }
.m-level.ok { color: var(--ok); }
.m-level.warn { color: var(--warn); }
.m-level.bad { color: var(--bad); }
.m-verdict p { font-size: 13.5px; color: var(--ink-3); line-height: 1.85; }
.m-meter { height: 8px; background: var(--line-2); border-radius: 4px; margin-top: 20px; overflow: hidden; }
.m-meter i { display: block; height: 100%; width: 0; border-radius: 4px; background: linear-gradient(90deg, var(--ok), var(--warn), var(--bad)); transition: width 1s cubic-bezier(.2,.7,.2,1); }
.m-help { display: grid; gap: 10px; }
.mh-item { border: 1px solid var(--line); background: var(--card); padding: 16px 20px 14px; }
.mh-item b { display: block; font-size: 14.5px; color: var(--ink); margin-bottom: 5px; }
.mh-item span { font-size: 12.5px; color: var(--ink-3); line-height: 1.8; }
.mh-num { color: var(--cinnabar); font-family: var(--num); font-size: 18px; }
@media (max-width: 760px) {
  .m-opts { grid-template-columns: 1fr 1fr; }
  .m-score-row { flex-direction: column; align-items: flex-start; gap: 14px; }
}

/* ---- AI 陪读聊天 ---- */
.chat { max-width: 760px; margin: 0 auto 70px; }
.chat-log {
  min-height: 320px; max-height: 56vh; overflow-y: auto;
  border: 1px solid var(--line); background: var(--card);
  padding: 20px 18px; display: flex; flex-direction: column; gap: 12px;
}
.msg { display: flex; }
.msg.me { justify-content: flex-end; }
.msg-in {
  max-width: 82%; padding: 11px 15px; font-size: 14px; line-height: 1.85;
  border-radius: 10px; white-space: normal; word-break: break-word;
}
.msg.bot .msg-in { background: var(--cream); border: 1px solid var(--line-2); color: var(--ink-2); border-top-left-radius: 2px; }
.msg.me .msg-in { background: var(--cinnabar); color: #fff; border-top-right-radius: 2px; }
.msg.live .msg-in::after { content: '▍'; color: var(--cinnabar); animation: blink 1s steps(2) infinite; }
@keyframes blink { 50% { opacity: 0; } }
.chat-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0; }
.chat-chips button {
  border: 1px solid var(--line); background: var(--white); color: var(--ink-3);
  font-size: 12.5px; padding: 6px 13px; border-radius: 18px; cursor: pointer; transition: all .2s;
}
.chat-chips button:hover { border-color: var(--cinnabar); color: var(--cinnabar); }
.chat-input { display: flex; gap: 10px; }
.chat-input input {
  flex: 1; min-width: 0; padding: 12px 15px; font-size: 15px;
  background: var(--white); border: 1px solid var(--line); border-radius: 6px; color: var(--ink);
}
.chat-input input:focus { outline: 2px solid var(--cinnabar); outline-offset: 1px; }
.chat-note { margin-top: 10px; font-size: 11.5px; color: var(--ink-4); line-height: 1.8; }
@media (max-width: 760px) {
  .msg-in { max-width: 92%; font-size: 13.5px; }
  .chat-log { max-height: 52vh; }
}

/* ---- 加入协会 ---- */
.j-hero { max-width: 640px; margin: 44px 0 26px; }
.j-kicker { font-size: 11px; letter-spacing: .22em; color: var(--cinnabar); font-weight: 700; margin-bottom: 10px; }
.j-hero h1 { font-family: var(--serif); font-size: clamp(28px, 5vw, 40px); color: var(--ink); margin-bottom: 12px; }
.j-hero h1 em { color: var(--cinnabar); font-style: normal; }
.j-hero p { font-size: 14px; color: var(--ink-3); line-height: 1.95; }
.j-roles { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.j-roles button {
  border: 1px solid var(--line); background: var(--white); color: var(--ink-3);
  font-size: 13px; padding: 11px 8px; border-radius: 4px; cursor: pointer; transition: all .2s;
}
.j-roles button:hover { border-color: var(--cinnabar); color: var(--cinnabar); }
.j-roles button.on { background: var(--cinnabar); border-color: var(--cinnabar); color: #fff; font-weight: 600; }
.j-done {
  max-width: 640px; text-align: center; padding: 46px 30px 40px;
  border: 1px solid rgba(179,53,31,.3); background: var(--card); position: relative;
}
.j-done h2 { font-family: var(--serif); font-size: 24px; color: var(--ink); margin: 18px 0 12px; }
.j-done p { font-size: 13.5px; color: var(--ink-3); line-height: 1.9; }
.j-seal {
  width: 74px; height: 74px; margin: 0 auto; border-radius: 10px;
  background: var(--cinnabar); color: #fff; font-family: var(--serif);
  font-size: 19px; line-height: 1.2; display: flex; align-items: center; justify-content: center;
  transform: rotate(-6deg); box-shadow: 0 8px 20px rgba(179,53,31,.35);
  animation: stampDown .5s cubic-bezier(.3,1.6,.4,1) both;
}
.j-faq { max-width: 640px; margin: 30px 0 80px; display: grid; gap: 10px; }
.j-faq-item { border: 1px solid var(--line); background: var(--card); padding: 14px 18px 12px; }
.j-faq-item b { display: block; font-size: 13.5px; color: var(--ink); margin-bottom: 4px; }
.j-faq-item span { font-size: 12.5px; color: var(--ink-3); line-height: 1.8; }
@media (max-width: 760px) { .j-roles { grid-template-columns: 1fr; } }

/* ---- 入口确认层主按钮（不在 .ink / .paper 域内，需显式着色） ---- */
.gate .btn-primary {
  background: var(--cinnabar); color: #F8F1E4; border-color: var(--cinnabar);
  box-shadow: 0 10px 26px -10px rgba(179,53,31,.6); letter-spacing: .08em;
}
.gate .btn-primary:hover { background: #C23A20; color: #F8F1E4; border-color: #C23A20; transform: translateY(-1px); }

/* ---- 手机端导航：8 项入口改为两行全显（比横滑更好找） ---- */
@media (max-width: 720px) {
  .topbar nav {
    flex-wrap: wrap; overflow: visible; gap: 9px 16px; padding: 10px 18px 11px;
  }
  .topbar nav a { font-size: 12px; }
}

/* ============================================================
   v80 · 示例案例模式 / 免责声明弹层 / 管理端学生详情
   ============================================================ */

/* ---- 示例案例横幅与页面水印 ---- */
.sample-banner {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  margin: 26px 0 22px; padding: 16px 20px;
  border: 1px dashed var(--cinnabar); background: rgba(179,53,31,.05);
}
.sample-banner > b {
  font-family: var(--serif); font-size: 15px; color: var(--cinnabar);
  letter-spacing: .12em; white-space: nowrap;
}
.sample-banner > span { flex: 1; min-width: 260px; font-size: 12.5px; line-height: 1.9; color: var(--ink-3); }
.sample-banner > span b { color: var(--cinnabar); }
.is-sample::after {
  content: '系统示例 · 非真实数据';
  position: fixed; left: 50%; top: 46%; z-index: 60; pointer-events: none;
  transform: translate(-50%,-50%) rotate(-24deg);
  font-family: var(--serif); font-size: 64px; letter-spacing: .18em;
  color: rgba(179,53,31,.07); white-space: nowrap;
}
@media print { .is-sample::after { display: none; } .sample-banner { display: none; } }

/* ---- 通用弹层（免责声明 / 管理端详情共用骨架） ---- */
.modal-mask {
  position: fixed; inset: 0; z-index: 1200; display: flex;
  align-items: center; justify-content: center; padding: 22px;
  background: rgba(24,20,16,.55); backdrop-filter: blur(3px);
}
.modal-mask[hidden] { display: none; }
.modal-card {
  width: 100%; max-width: 720px; max-height: 86vh; overflow: auto;
  background: var(--card); border: 1px solid var(--line);
  box-shadow: 0 30px 80px -20px rgba(24,20,16,.5);
}
.modal-head {
  position: sticky; top: 0; z-index: 2; display: flex; align-items: center; gap: 14px;
  padding: 16px 22px; background: var(--card); border-bottom: 1px solid var(--line);
}
.modal-head-k { font-size: 11px; letter-spacing: .2em; color: var(--ink-4); }
.modal-head h3 { font-family: var(--serif); font-size: 19px; color: var(--ink); margin: 0; }
.modal-x {
  margin-left: auto; width: 34px; height: 34px; border: 1px solid var(--line);
  background: var(--white); color: var(--ink-3); font-size: 17px; cursor: pointer;
}
.modal-x:hover { border-color: var(--cinnabar); color: var(--cinnabar); }
.modal-body { padding: 20px 24px 28px; }
.modal-body ol.sg { margin: 0; }
.modal-body ol.sg li { font-size: 13px; line-height: 1.95; color: var(--ink-2); margin-bottom: 12px; }
.modal-body ol.sg li b { color: var(--ink); }

/* ---- 管理端：学生作答详情 ---- */
.qa-step { margin-bottom: 22px; }
.qa-step-t {
  font-family: var(--serif); font-size: 14.5px; color: var(--ink);
  padding-bottom: 8px; margin-bottom: 10px; border-bottom: 1px solid var(--line);
}
.qa-step-t span { font-size: 11px; color: var(--ink-4); margin-left: 8px; letter-spacing: .1em; }
.qa-item { display: flex; gap: 14px; padding: 7px 0; font-size: 13px; line-height: 1.8; }
.qa-item .qa-q { flex: 0 0 200px; color: var(--ink-4); }
.qa-item .qa-a { flex: 1; color: var(--ink); word-break: break-all; }
.qa-item .qa-a em { color: var(--ink-4); font-style: normal; }
.meta-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px 18px;
  margin-bottom: 20px; padding: 14px 16px; background: var(--white); border: 1px solid var(--line);
}
.meta-grid .mg { font-size: 12.5px; }
.meta-grid .mg span { display: block; color: var(--ink-4); font-size: 11px; margin-bottom: 2px; }
.meta-grid .mg b { color: var(--ink); font-weight: 600; }
@media (max-width: 640px) {
  .qa-item { flex-direction: column; gap: 2px; }
  .qa-item .qa-q { flex: none; }
  .meta-grid { grid-template-columns: 1fr 1fr; }
  .is-sample::after { font-size: 34px; }
}
.tb .row-link { color: var(--cinnabar); cursor: pointer; font-size: 12px; white-space: nowrap; }
.tb .row-link:hover { text-decoration: underline; }

/* ---- 免责声明入口按钮（文字链样式） ---- */
.gate-dsc, .f-dsc {
  background: none; border: none; padding: 0; cursor: pointer;
  font: inherit; color: var(--cinnabar); text-decoration: underline;
  text-underline-offset: 3px;
}
.gate-dsc:hover, .f-dsc:hover { color: #C23A20; }
.f-dsc { color: inherit; opacity: .85; }
.f-dsc:hover { opacity: 1; color: inherit; }

/* ============================================================
   v81 · 导航突出测评主功能 / 手机端可用性 / 加入我们栏目
   ============================================================ */

/* ---- 桌面端：测评主按钮（金色/朱砂描边胶囊） ---- */
.topbar nav a.nav-cta {
  border: 1px solid var(--gold); color: var(--gold-2);
  border-radius: 999px; padding: 7px 15px; margin: 0 3px;
}
.topbar nav a.nav-cta:hover { background: rgba(198, 156, 88, .14); color: var(--gold-2); }
.topbar nav a.nav-cta.on { background: var(--gold); color: #2A230F; }
.light .topbar nav a.nav-cta { border-color: var(--cinnabar); color: var(--cinnabar); }
.light .topbar nav a.nav-cta:hover { background: rgba(179, 53, 31, .08); color: var(--cinnabar); }
.light .topbar nav a.nav-cta.on { background: var(--cinnabar); color: #FFF7EA; }

/* ---- 手机端导航：第一行两个测评大按钮，第二行功能入口 ---- */
@media (max-width: 720px) {
  .topbar nav {
    display: flex; flex-wrap: wrap; gap: 8px;
    margin: 10px -16px 0; padding: 10px 16px 12px;
    overflow: visible; border-top: 1px solid var(--hair);
  }
  .light .topbar nav { border-top-color: var(--line); }
  .topbar nav a {
    flex: 1 1 17%; font-size: 13px; letter-spacing: .02em;
    padding: 11px 4px; text-align: center; border-radius: 3px;
  }
  .topbar nav a.nav-cta {
    order: -1; flex: 1 1 42%; padding: 14px 6px;
    font-size: 15.5px; font-weight: 700; letter-spacing: .1em; border-radius: 4px;
  }
  .ink .topbar nav a.nav-cta { background: var(--gold); border-color: var(--gold); color: #2A230F; }
  .ink .topbar nav a.nav-cta + .nav-cta { background: transparent; color: var(--gold-2); }
  .ink .topbar nav a.nav-cta.on { box-shadow: 0 0 0 2px rgba(198, 156, 88, .45); }
  .light .topbar nav a.nav-cta { background: var(--cinnabar); border-color: var(--cinnabar); color: #FFF7EA; }
  .light .topbar nav a.nav-cta + .nav-cta { background: var(--white); color: var(--cinnabar); }
  .light .topbar nav a.nav-cta.on { box-shadow: 0 0 0 2px rgba(179, 53, 31, .3); }

  /* ---- 手机端字号与点击区域兜底 ---- */
  .logo-text small { font-size: 9.5px; letter-spacing: .04em; }
  .hero-main .kicker { font-size: 11.5px; }
  input[type=text], input[type=number], input[type=tel], select, textarea { font-size: 16px; }
  .q-step-hint { font-size: 13px; }
  .m-cta a { min-height: 48px; display: flex; align-items: center; justify-content: center; }
  .tool-card .tc-go { display: inline-block; padding: 6px 0; }
}

@media (max-width: 560px) {
  .scale-row .opt { font-size: 12.5px; padding: 13px 2px; }
  .c-item span { font-size: 11.5px; }
  .hero-main .kicker { font-size: 11px; }
}

/* ---- 加入我们栏目（深色大卡 + 大字背景 + 印章） ---- */
.join-band {
  position: relative; overflow: hidden;
  display: grid; grid-template-columns: 1fr 250px; gap: 44px;
  background: var(--inkbg-2); color: var(--snow);
  border: 1px solid #28221A; padding: 46px 48px 42px;
}
.jb-bg {
  position: absolute; right: -24px; bottom: -84px; pointer-events: none;
  font-family: var(--serif); font-size: 320px; line-height: 1;
  color: rgba(233, 226, 210, .05);
}
.jb-kicker {
  display: flex; align-items: center; gap: 12px;
  font-size: 11.5px; letter-spacing: .22em; color: var(--gold-2); margin-bottom: 16px;
}
.jb-kicker::before { content: ""; width: 26px; height: 1px; background: var(--gold); }
.join-band h3 { font-family: var(--serif); font-size: 31px; color: var(--snow); margin-bottom: 14px; }
.join-band h3 em { font-style: normal; color: var(--gold-2); }
.jb-lead { font-size: 13.5px; line-height: 2.05; color: var(--fog); max-width: 580px; margin-bottom: 24px; }
.jb-roles { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 28px; }
.jb-role { border: 1px solid var(--hair-2); padding: 10px 18px 9px; }
.jb-role b { display: block; font-family: var(--serif); font-size: 14.5px; color: var(--gold-2); margin-bottom: 2px; }
.jb-role span { font-size: 11.5px; color: var(--fog-2); }
.jb-actions { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.jb-btn { background: var(--gold); border: 1px solid var(--gold); color: #2A230F !important; font-weight: 700; }
.jb-btn:hover { background: var(--gold-2); border-color: var(--gold-2); }
.jb-note { font-size: 12px; color: var(--fog-2); }
.jb-side {
  position: relative; border-left: 1px solid var(--hair); padding-left: 32px;
  display: flex; flex-direction: column; gap: 20px;
}
.jb-seal {
  position: absolute; top: -8px; right: 0; width: 66px; height: 66px;
  border: 2px solid var(--seal); color: #E0644C; opacity: .92;
  font-family: var(--serif); font-size: 13px; line-height: 1.35; text-align: center;
  display: flex; align-items: center; justify-content: center; transform: rotate(8deg);
}
.jb-stat b { display: block; font-family: var(--num); font-size: 27px; color: var(--gold-2); }
.jb-stat span { display: block; margin-top: 3px; font-size: 11.5px; line-height: 1.65; color: var(--fog-2); }
@media (max-width: 860px) {
  .join-band { grid-template-columns: 1fr; gap: 30px; padding: 34px 26px 30px; }
  .join-band h3 { font-size: 25px; }
  .jb-side { border-left: 0; border-top: 1px solid var(--hair); padding: 24px 0 0; flex-direction: row; flex-wrap: wrap; gap: 18px 28px; }
  .jb-seal { position: static; width: 58px; height: 58px; font-size: 12px; }
  .jb-bg { font-size: 210px; right: -14px; bottom: -56px; }
}

/* ---- 管理端详情弹层：导出按钮 ---- */
.modal-exp {
  margin-left: auto; padding: 9px 18px; border: 1px solid var(--cinnabar);
  background: var(--white); color: var(--cinnabar); font-size: 12.5px; cursor: pointer;
}
.modal-exp:hover:not(:disabled) { background: var(--cinnabar); color: #FFF7EA; }
.modal-exp:disabled { opacity: .4; cursor: not-allowed; }
.modal-exp + .modal-x { margin-left: 10px; }

/* 加入栏目 · 手机端排布修正 */
@media (max-width: 860px) {
  .jb-roles { flex-direction: column; gap: 8px; }
  .jb-role { width: 100%; padding: 12px 16px 11px; }
  .jb-actions { flex-direction: column; align-items: stretch; gap: 10px; }
  .jb-actions .btn { width: 100%; text-align: center; padding: 15px 10px; font-size: 15px; }
  .jb-note { text-align: center; }
  .jb-side { display: grid; grid-template-columns: 1fr 1fr; gap: 20px 18px; align-items: start; }
  .jb-seal { justify-self: start; }
  .jb-stat b { font-size: 24px; }
}

/* 手机端：功能性小字统一抬高（装饰性标签保持原样） */
@media (max-width: 720px) {
  .q-help, .report-head .meta, .save-note, .progress-meta, .footer .f-l { font-size: 12.5px; line-height: 1.9; }
  .opt .os { font-size: 12px; }
  .holland-q b { font-size: 11.5px; }
  .link-more { display: inline-block; padding: 10px 0; font-size: 13px; }
  .survey-actions .btn, .toolbar .btn { min-height: 46px; font-size: 14.5px; }
  .q-label { font-size: 14.5px; }
  .opt { padding: 14px 14px; font-size: 14.5px; }
}

/* 管理端详情弹层 · 手机端头部重排 */
@media (max-width: 640px) {
  .modal-head { flex-wrap: wrap; padding: 14px 16px; gap: 10px 12px; }
  .modal-head > div:first-child { flex: 1 1 100%; }
  .modal-head h3 { font-size: 16.5px; }
  .modal-exp { margin-left: 0; padding: 11px 18px; font-size: 13.5px; white-space: nowrap; }
  .modal-x { margin-left: auto; width: 40px; height: 40px; }
}

/* 04 版块：报告回流说明 */
.duo-note {
  margin: 26px 0 0; padding: 14px 0 14px 18px;
  border-left: 2px solid var(--gold); font-size: 13px; line-height: 2; color: var(--fog);
}
.duo-note b { color: var(--gold-2); font-weight: 600; }
@media (max-width: 720px) {
  .duo-note { font-size: 12.5px; line-height: 1.95; padding-left: 14px; }
}

/* 手机端区块头：说明文字换到下一行，标题不再被挤成单字 */
@media (max-width: 720px) {
  .sec-head { flex-wrap: wrap; gap: 10px 16px; align-items: flex-end; }
  .sec-head .hgroup { flex: 1 1 auto; }
  .sec-head .note { flex: 0 0 100%; padding-bottom: 0; letter-spacing: .16em; }
  .sec-head .no { font-size: 42px; }
  .sec-head h2 { font-size: 22px; line-height: 1.4; }
}

/* ============================================================
   v82 · 页脚全站导航（解决"功能找不到"）
   ============================================================ */
.f-map { display: flex; flex-wrap: wrap; gap: 12px 44px; padding-bottom: 24px; margin-bottom: 26px; }
.ink .f-map { border-bottom: 1px solid var(--hair); }
.light .f-map { border-bottom: 1px solid var(--line); }
.fm-g { display: flex; align-items: baseline; gap: 4px 16px; flex-wrap: wrap; }
.fm-g > b { font-size: 11px; letter-spacing: .22em; margin-right: 4px; font-weight: 600; }
.ink .fm-g > b { color: var(--fog-2); }
.light .fm-g > b { color: var(--ink-4); }
.fm-g a { font-size: 12.5px; text-decoration: none; padding: 5px 0; }
.ink .fm-g a { color: var(--fog); }
.ink .fm-g a:hover { color: var(--gold-2); }
.light .fm-g a { color: var(--ink-3); }
.light .fm-g a:hover { color: var(--cinnabar); }
.fm-g a.fm-on { opacity: .38; pointer-events: none; }
.fm-inner { opacity: .85; }
@media (max-width: 720px) {
  .f-map { gap: 10px 26px; padding-bottom: 20px; margin-bottom: 20px; }
  .fm-g a { font-size: 13px; padding: 8px 0; }
}
/* 测评三页（无 footer-in）轻量页脚 */
.light .footer .f-map { margin-bottom: 0; padding-bottom: 6px; border-bottom: 0; }

/* v82 · 手机端：工具卡改单列、页脚导航更紧凑 */
@media (max-width: 520px) {
  .tool-grid { grid-template-columns: 1fr; }
  .tool-card { display: block; }
  .f-map { gap: 7px 18px; padding-bottom: 18px; margin-bottom: 18px; }
  .fm-g { gap: 2px 12px; }
  .fm-g > b { font-size: 10.5px; letter-spacing: .16em; margin-right: 2px; }
  .fm-g a { font-size: 12.5px; padding: 7px 0; }
}

/* ============================================================
   v83 · 悬浮「全部功能」面板 + 首页功能直达带
   ============================================================ */

/* ---- 悬浮按钮：右缘立式金章 ---- */
.qn-fab {
  position: fixed; right: 0; top: 50%; transform: translateY(-50%); z-index: 90;
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  padding: 14px 9px; border: 1px solid var(--gold); border-right: 0;
  border-radius: 6px 0 0 6px; background: var(--gold); color: #2A230F;
  font-family: var(--serif); font-size: 14px; letter-spacing: .08em; cursor: pointer;
  box-shadow: -6px 0 24px rgba(198, 156, 88, .35); transition: padding .2s, background .2s;
}
.qn-fab:hover { padding-right: 14px; background: var(--gold-2); }
.qn-fab span { writing-mode: horizontal-tb; line-height: 1.2; }

/* ---- 遮罩与抽屉面板 ---- */
.qn-mask {
  position: fixed; inset: 0; z-index: 1100; background: rgba(16, 13, 9, .55);
  opacity: 0; transition: opacity .25s; backdrop-filter: blur(2px);
}
.qn-mask.on { opacity: 1; }
.qn-panel {
  position: fixed; top: 0; right: 0; bottom: 0; z-index: 1110;
  width: min(380px, 90vw); display: flex; flex-direction: column;
  background: #17140F; color: #EDE7D6; border-left: 1px solid rgba(198, 156, 88, .4);
  transform: translateX(102%); transition: transform .28s cubic-bezier(.2, .8, .2, 1);
}
.qn-panel.on { transform: none; }
.qn-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px 22px 16px; border-bottom: 1px solid rgba(233, 226, 210, .1);
}
.qn-head b { font-family: var(--serif); font-size: 19px; letter-spacing: .1em; color: #E9C97E; display: block; }
.qn-head span { font-size: 11px; letter-spacing: .18em; color: rgba(233, 226, 210, .5); }
.qn-x {
  width: 38px; height: 38px; border: 1px solid rgba(233, 226, 210, .25); border-radius: 4px;
  background: none; color: #EDE7D6; font-size: 19px; cursor: pointer;
}
.qn-x:hover { border-color: #E9C97E; color: #E9C97E; }
.qn-body { flex: 1; overflow-y: auto; padding: 8px 22px 20px; }
.qn-g { padding: 16px 0 6px; }
.qn-g-t {
  font-size: 11px; letter-spacing: .24em; color: rgba(233, 201, 126, .75);
  margin-bottom: 10px; display: flex; align-items: center; gap: 10px;
}
.qn-g-t::after { content: ""; flex: 1; height: 1px; background: rgba(233, 226, 210, .1); }
.qn-item {
  display: block; padding: 11px 14px; margin-bottom: 7px; text-decoration: none;
  border: 1px solid rgba(233, 226, 210, .12); border-radius: 5px; background: rgba(233, 226, 210, .03);
  transition: border-color .18s, background .18s;
}
.qn-item:hover { border-color: rgba(233, 201, 126, .6); background: rgba(233, 201, 126, .07); }
.qn-item b { display: block; font-size: 14.5px; color: #F4EEDC; margin-bottom: 3px; font-weight: 600; }
.qn-item span { font-size: 12px; color: rgba(233, 226, 210, .55); line-height: 1.5; }
.qn-item.qn-on { border-style: dashed; opacity: .55; }
.qn-item.qn-on span { color: rgba(233, 201, 126, .8); }
.qn-home {
  display: block; margin: 0 22px 22px; padding: 13px; text-align: center; text-decoration: none;
  border: 1px solid rgba(233, 201, 126, .5); border-radius: 5px; color: #E9C97E;
  font-size: 13.5px; letter-spacing: .12em;
}
.qn-home:hover { background: rgba(233, 201, 126, .1); }

/* ---- 首页 hero：功能直达带 ---- */
.hero-quick {
  margin-top: 22px; padding-top: 18px; border-top: 1px dashed var(--hair);
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
}
.hq-k { font-size: 11px; letter-spacing: .2em; color: var(--fog-2); margin-right: 6px; }
.hero-quick a {
  font-size: 12.5px; color: var(--fog); text-decoration: none;
  border: 1px solid var(--hair-2); border-radius: 999px; padding: 6px 13px;
  transition: border-color .18s, color .18s, background .18s;
}
.hero-quick a:hover { border-color: var(--gold); color: var(--gold-2); background: rgba(198, 156, 88, .08); }
@media (max-width: 720px) {
  .hero-quick a { font-size: 13px; padding: 9px 14px; }
  .qn-fab { top: auto; bottom: 118px; transform: none; padding: 12px 8px; font-size: 13px; }
}

/* v83 微调：面板条目更紧凑，一屏看到更多 */
.qn-item { padding: 9px 13px; margin-bottom: 6px; }
.qn-item b { font-size: 14px; }
.qn-item span { font-size: 11.5px; }
.qn-g { padding: 12px 0 4px; }
.qn-g-t { margin-bottom: 8px; }

/* v83 内部三端：紧凑胶囊组 */
.qn-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.qn-chip {
  flex: 1 1 auto; min-width: 88px; text-align: center; text-decoration: none;
  padding: 11px 8px; font-size: 13px; color: #F4EEDC;
  border: 1px solid rgba(233, 226, 210, .16); border-radius: 5px; background: rgba(233, 226, 210, .03);
}
.qn-chip:hover { border-color: rgba(233, 201, 126, .6); color: #E9C97E; }
.qn-chip.qn-on { border-style: dashed; opacity: .5; }

/* v83 面板再压缩：900px 高桌面一屏看全四组 */
.qn-head { padding: 16px 20px 12px; }
.qn-head b { font-size: 17.5px; }
.qn-body { padding: 4px 18px 14px; }
.qn-item { padding: 8px 12px; margin-bottom: 5px; }
.qn-item b { font-size: 13.5px; margin-bottom: 2px; }
.qn-item span { font-size: 11px; line-height: 1.4; }
.qn-g { padding: 10px 0 2px; }
.qn-g-t { margin-bottom: 7px; font-size: 10.5px; }
.qn-chip { padding: 10px 8px; font-size: 12.5px; }
.qn-home { margin: 0 18px 16px; padding: 11px; font-size: 13px; }

/* v83 底部常驻区：老师与专家 + 回首页 */
.qn-foot {
  flex: none; padding: 12px 18px 14px; border-top: 1px solid rgba(233, 226, 210, .12);
  background: rgba(233, 201, 126, .04);
}
.qn-foot .qn-g-t { margin-bottom: 8px; }
.qn-foot .qn-home { margin: 12px 0 0; }

/* v83 滚动提示：底部渐隐，暗示还有内容 */
.qn-body { position: relative; }
.qn-body::after {
  content: ""; position: sticky; bottom: 0; display: block;
  height: 30px; margin: 0 -18px -14px; pointer-events: none;
  background: linear-gradient(rgba(23, 20, 15, 0), #17140F);
}

/* ============================================================
   v84 · 导航只留测评入口 / 一键到底按钮
   ============================================================ */
@media (max-width: 720px) {
  /* 三项导航：首页小、两个测评大按钮一行放下 */
  .topbar nav { gap: 8px; }
  .topbar nav a:not(.nav-cta) {
    flex: 0 0 auto; min-width: 62px; font-size: 13px; padding: 12px 10px;
    align-self: stretch; display: flex; align-items: center; justify-content: center;
  }
  .topbar nav a.nav-cta { flex: 1 1 0; }
}

/* ---- 一键到底（与回到顶部配对，叠在其上方） ---- */
.to-bot { bottom: 74px; }
.to-bot:hover { border-color: var(--gold); color: var(--gold-2); }
@media (max-width: 720px) {
  .to-top { bottom: 96px; }
  .to-bot { bottom: 148px; }
}

/* v84 修正：手机端三个悬浮控件垂直堆叠，互不遮挡 */
@media (max-width: 720px) {
  .qn-fab { bottom: 206px; }
}

/* v84 收尾：手机端首页在最左、去掉重复的底部测评条、悬浮件下移 */
@media (max-width: 720px) {
  .topbar nav a.nav-cta { order: 0; }
  .m-cta { display: none !important; }
  .to-top { bottom: 24px; }
  .to-bot { bottom: 76px; }
  .qn-fab { bottom: 134px; }
}

/* ============================================================
   v85 · 顶部公告横幅 / 管理端手机端疏朗 / 答辩实训室
   ============================================================ */

/* ---------- 顶部滚动公告（全站注入） ---------- */
.topmq {
  position: relative; z-index: 96;
  display: flex; align-items: stretch;
  background: #14110C; color: #EDE7D6;
  border-bottom: 1px solid rgba(198, 156, 88, .26);
  font-size: 12.5px; letter-spacing: .05em;
}
.topmq[hidden] { display: none; }
.topmq-k {
  flex: 0 0 auto; display: flex; align-items: center; gap: 7px;
  padding: 0 15px; background: var(--cinnabar); color: #FFF6E8;
  font-weight: 700; letter-spacing: .2em; font-size: 11px; white-space: nowrap;
}
.topmq-k::before {
  content: ""; width: 5px; height: 5px; border-radius: 50%; background: #FFE9B8;
  animation: mqdot 1.8s ease-in-out infinite;
}
@keyframes mqdot { 0%, 100% { opacity: 1; } 50% { opacity: .2; } }
.topmq-vp { flex: 1 1 auto; min-width: 0; overflow: hidden; position: relative; }
.topmq-track { display: flex; width: max-content; animation: mq 48s linear infinite; will-change: transform; }
.topmq:hover .topmq-track, .topmq-track:focus-within { animation-play-state: paused; }
.topmq-track a, .topmq-track span.it {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 9px 0; white-space: nowrap; color: #EDE7D6; text-decoration: none;
}
.topmq-track a:hover { color: var(--gold-2); }
.topmq-track i { font-style: normal; color: var(--gold); opacity: .5; padding: 0 15px; }
.topmq-track b { color: var(--gold-2); font-weight: 600; font-variant-numeric: tabular-nums; }
@keyframes mq { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.topmq-x {
  flex: 0 0 auto; width: 34px; border: 0; border-left: 1px solid rgba(233, 226, 210, .12);
  background: none; color: #9C947E; font-size: 16px; line-height: 1; cursor: pointer;
}
.topmq-x:hover { color: #FFF; background: rgba(255, 255, 255, .06); }
@media (max-width: 720px) {
  .topmq { font-size: 11.5px; }
  .topmq-k { padding: 0 10px; font-size: 10px; letter-spacing: .14em; }
  .topmq-track a, .topmq-track span.it { padding: 8px 0; }
  .topmq-track i { padding: 0 10px; }
}
@media print { .topmq { display: none !important; } }
@media (prefers-reduced-motion: reduce) {
  .topmq-track { animation: none; }
  .topmq-vp { overflow-x: auto; }
  .topmq-k::before { animation: none; }
}

/* ---------- 悬浮「全部功能」：竖排单列，永不被裁切 ---------- */
.qn-fab {
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  padding: 13px 8px; letter-spacing: 0; font-size: 13px; line-height: 1;
  border-radius: 6px 0 0 6px;
}
.qn-fab span { display: inline; line-height: 1; }
.qn-fab:hover { padding-right: 13px; }
.qn-home svg { vertical-align: -2px; margin-right: 6px; }

/* ---------- 管理端：手机端侧栏横滑 + 表格卡片化 ---------- */
@media (max-width: 1060px) {
  .side {
    display: flex; align-items: center; gap: 8px;
    overflow-x: auto; -webkit-overflow-scrolling: touch;
    padding: 10px 12px; margin-bottom: 24px; scrollbar-width: none;
  }
  .side::-webkit-scrollbar { display: none; }
  .side .grp { display: none; }
  .side a, .side button {
    width: auto; flex: 0 0 auto; gap: 6px;
    padding: 8px 14px; border: 1px solid var(--line); border-radius: 999px;
    font-size: 12.5px; white-space: nowrap; background: var(--white);
  }
  .side .on { border-color: transparent; box-shadow: none; }
  .side .side-badge { margin-left: 2px; }
}
@media (max-width: 720px) {
  .tb thead { display: none; }  .tb, .tb tbody { display: block; width: 100%; }
  .tb tr {
    display: block; border: 1px solid var(--line); border-radius: 8px;
    background: var(--white); padding: 8px 14px; margin-bottom: 10px;
  }
  .tb tr:hover { background: var(--white); }
  .tb td {
    display: flex; align-items: baseline; justify-content: space-between; gap: 14px;
    border: 0; padding: 5px 0; font-size: 12.5px; text-align: right; white-space: normal; min-height: 22px;
  }
  .tb td::before {
    content: attr(data-label); flex: 0 0 auto; color: var(--muted);
    font-size: 11.5px; letter-spacing: .06em; text-align: left;
  }
  .tb td:empty { display: none; }
  .tb td[data-label=""]::before { content: none; }
  #q { max-width: none !important; width: 100%; margin-left: 0 !important; }
}

/* ---------- 首页疏朗：hero 与栏目留白 ---------- */
.hero-main .kicker { margin-bottom: 28px; }
.hero-main .lead { line-height: 2.05; margin-bottom: 24px; }
.hero-line { margin: 0 0 28px; }
.hero-quick { margin-top: 26px; padding-top: 20px; gap: 10px; }
.hero-logos { margin-top: 26px; }
.hero-depts { margin-top: 28px; padding-top: 20px; }
.tool-grid { gap: 22px; }
.tool-card { padding: 30px 28px 24px; }
.tool-card p { line-height: 1.95; }
.tool-card h3 { margin-bottom: 12px; }
@media (max-width: 720px) {
  .hero-line { display: none; }
  .hero-main .lead { font-size: 14px; line-height: 2; margin-bottom: 20px; }
  .hero-depts { grid-template-columns: 1fr 1fr; gap: 4px 10px; max-width: none; }
  .hero-quick .hq-k { flex-basis: 100%; margin: 0 0 2px; }
  .hero-quick a { padding: 9px 15px; }
  .tool-card { padding: 24px 22px 20px; }
}

/* ---------- 答辩实训室 ---------- */
.pt-wrap { display: grid; grid-template-columns: minmax(0, 1.02fr) minmax(0, .98fr); gap: 26px; align-items: start; }
.pt-card { background: var(--white); border: 1px solid var(--line); border-radius: 10px; padding: 26px 26px 24px; box-shadow: var(--sh-1); }
.pt-card h3 { font-family: var(--serif); font-size: 18px; margin-bottom: 6px; }
.pt-card .pt-sub { font-size: 12.5px; color: var(--ink-3); line-height: 1.9; margin-bottom: 20px; }
.pt-timer { display: flex; flex-direction: column; align-items: center; gap: 18px; }
.pt-ring { position: relative; width: 236px; height: 236px; }
.pt-ring svg { width: 236px; height: 236px; transform: rotate(-90deg); }
.pt-ring .rbg { fill: none; stroke: var(--line-2); stroke-width: 6.5; }
.pt-ring .rfg { fill: none; stroke: var(--cinnabar); stroke-width: 6.5; stroke-linecap: round; transition: stroke-dashoffset .25s linear, stroke .3s; }
.pt-ring .rmid { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; }
.pt-time { font-family: var(--num); font-size: 46px; font-weight: 700; color: var(--ink); letter-spacing: .02em; font-variant-numeric: tabular-nums; line-height: 1; }
.pt-time.is-warn { color: #B87300; }
.pt-time.is-danger { color: var(--bad); animation: ptpulse .9s ease-in-out infinite; }
@keyframes ptpulse { 0%, 100% { opacity: 1; } 50% { opacity: .42; } }
.pt-state { font-size: 11px; letter-spacing: .2em; color: var(--muted); }
.pt-presets { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
.pt-presets button {
  font: inherit; font-size: 12.5px; cursor: pointer; padding: 8px 15px; border-radius: 999px;
  border: 1px solid var(--line); background: var(--white); color: var(--ink-3); transition: all .18s;
}
.pt-presets button:hover { border-color: var(--cinnabar); color: var(--cinnabar); }
.pt-presets button.on { background: var(--cinnabar); border-color: var(--cinnabar); color: #FFF6E8; }
.pt-ctrl { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; }
.pt-ctrl .btn { min-width: 116px; justify-content: center; }
.pt-note { font-size: 11.5px; color: var(--ink-4); line-height: 1.9; text-align: center; margin-top: 4px; }
.pt-tabs { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 16px; }
.pt-tabs button {
  font: inherit; font-size: 12px; cursor: pointer; padding: 7px 13px; border-radius: 999px;
  border: 1px solid var(--line); background: var(--white); color: var(--ink-3);
}
.pt-tabs button.on { background: var(--ink); border-color: var(--ink); color: #F8F1E4; }
.pq { border-bottom: 1px solid var(--line-2); }
.pq:last-child { border-bottom: 0; }
.pq summary {
  cursor: pointer; list-style: none; padding: 13px 26px 13px 2px; position: relative;
  font-size: 13.5px; font-weight: 600; color: var(--ink); line-height: 1.6;
}
.pq summary::-webkit-details-marker { display: none; }
.pq summary::after { content: "＋"; position: absolute; right: 4px; top: 12px; color: var(--cinnabar); font-weight: 400; }
.pq[open] summary::after { content: "－"; }
.pq .pq-a { padding: 0 6px 15px 2px; font-size: 12.5px; color: var(--ink-3); line-height: 1.95; }
.pq .pq-a b { color: var(--ink); }
.pq .pq-a em { font-style: normal; color: var(--cinnabar); }
.rub-row { display: grid; grid-template-columns: 110px minmax(0, 1fr) 42px; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px dashed var(--line-2); }
.rub-row:last-of-type { border-bottom: 0; }
.rub-k { font-size: 12.5px; color: var(--ink-2); }
.rub-row input[type="range"] { width: 100%; accent-color: var(--cinnabar); height: 20px; }
.rub-v { font-family: var(--num); font-size: 14px; font-weight: 700; text-align: right; }
.rub-total { display: flex; align-items: baseline; gap: 12px; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line); }
.rub-total b { font-family: var(--num); font-size: 34px; line-height: 1; }
.rub-total .rub-lv { font-size: 12.5px; padding: 4px 12px; border-radius: 999px; background: var(--line-2); color: var(--ink-2); }
.rub-tip { font-size: 12.5px; color: var(--ink-3); line-height: 1.9; margin-top: 12px; padding: 12px 14px; background: var(--line-2); border-radius: 6px; }
.rub-actions { display: flex; gap: 10px; margin-top: 16px; flex-wrap: wrap; }
@media (max-width: 900px) { .pt-wrap { grid-template-columns: 1fr; } }
@media (max-width: 520px) {
  .pt-ring, .pt-ring svg { width: 200px; height: 200px; }
  .pt-time { font-size: 40px; }
  .pt-card { padding: 22px 18px 20px; }
  .rub-row { grid-template-columns: 84px minmax(0, 1fr) 36px; gap: 8px; }
  .rub-k { font-size: 12px; }
}
@media print {
  .pt-ctrl, .pt-presets, .rub-actions, .pt-tabs { display: none !important; }
  .pt-wrap { grid-template-columns: 1fr; }
  .pq .pq-a { display: block !important; }
}

/* v85 页脚可读性：当前页不再"隐身"，分组标题加深 */
.light .fm-g > b { color: var(--ink-3); }
.light .fm-g a { color: var(--ink-2); }
.fm-g a.fm-on {
  opacity: 1; color: var(--cinnabar) !important; font-weight: 600; pointer-events: none;
}
.fm-g a.fm-on::after {
  content: "当前"; font-size: 9.5px; letter-spacing: .08em; font-weight: 400;
  margin-left: 5px; padding: 0 3px; border: 1px solid currentColor; border-radius: 2px;
  opacity: .65; vertical-align: 1px;
}

/* ============================================================
   v86 · 管理端精细化（报名入口/培育名单/系部趋势）· 教师端实用工具
   ============================================================ */

/* 双栏面板（系部 TOP5 + 近 7 天） */
.duo-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.panel-k { font-size: 12px; font-weight: 700; letter-spacing: .12em; color: var(--ink-3); margin-bottom: 14px; }

/* 横向条形（系部 TOP5 / 教师端系部排行） */
.hbars { display: flex; flex-direction: column; gap: 10px; }
.hb-row { display: grid; grid-template-columns: 92px minmax(0, 1fr) 34px; align-items: center; gap: 10px; font-size: 12.5px; }
.hb-k { color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hb-bar { height: 10px; background: var(--line-2); border-radius: 5px; overflow: hidden; }
.hb-bar i { display: block; height: 100%; background: linear-gradient(90deg, var(--gold), var(--cinnabar)); border-radius: 5px; }
.hb-v { font-family: var(--num); font-weight: 700; text-align: right; color: var(--ink); }

/* 近 7 天迷你柱 */
.trend7 { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; align-items: end; height: 108px; }
.t7 { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 4px; height: 100%; }
.t7 i { width: 100%; max-width: 26px; background: var(--gold); border-radius: 3px 3px 0 0; min-height: 3px; }
.t7 b { font-family: var(--num); font-size: 11.5px; color: var(--ink); line-height: 1; min-height: 12px; }
.t7 span { font-size: 10.5px; color: var(--ink-4); }

/* 报名入口卡 */
.entry-card { display: flex; align-items: center; gap: 24px; margin-bottom: 18px; border-left: 3px solid var(--cinnabar); }
.entry-l { flex: 1 1 auto; min-width: 0; }
.entry-url {
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: 12.5px;
  color: var(--cinnabar); word-break: break-all; margin-bottom: 8px;
}
.entry-tip { font-size: 12.5px; color: var(--ink-3); line-height: 1.9; margin-bottom: 14px; }
.entry-btns { display: flex; gap: 10px; flex-wrap: wrap; }
.entry-qr {
  flex: 0 0 auto; width: 124px; height: 124px; display: flex; align-items: center; justify-content: center;
  background: #fff; border: 1px solid var(--line); border-radius: 8px; overflow: hidden;
}
@media (max-width: 720px) {
  .duo-grid { grid-template-columns: 1fr; }
  .entry-card { flex-direction: column; align-items: stretch; gap: 16px; }
  .entry-qr { margin: 0 auto; }
  .hb-row { grid-template-columns: 80px minmax(0, 1fr) 30px; }
}

/* 教师端：验真记录 */
.vf-hist { margin-top: 14px; display: none; flex-wrap: wrap; gap: 8px; align-items: center; }
.vf-hist.show { display: flex; }
.vf-hist .vh-k { font-size: 11.5px; color: var(--ink-4); letter-spacing: .06em; margin-right: 2px; }
.vf-hist button {
  font: inherit; font-size: 11.5px; cursor: pointer; padding: 5px 11px; border-radius: 999px;
  border: 1px solid var(--line); background: var(--white); color: var(--ink-3);
  font-family: ui-monospace, Consolas, monospace;
}
.vf-hist button:hover { border-color: var(--cinnabar); color: var(--cinnabar); }
.vf-hist button.ok i { color: #2E7D32; }
.vf-hist button.warn i { color: #B87300; }
.vf-hist button.bad i { color: var(--bad); }
.vf-hist button i { font-style: normal; margin-right: 5px; }

/* 教师端：约谈小助手 */
.talk-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.talk-chips button {
  font: inherit; font-size: 12.5px; cursor: pointer; padding: 8px 15px; border-radius: 999px;
  border: 1px solid var(--line); background: var(--white); color: var(--ink-3); transition: all .18s;
}
.talk-chips button:hover { border-color: var(--cinnabar); color: var(--cinnabar); }
.talk-chips button.on { background: var(--cinnabar); border-color: var(--cinnabar); color: #FFF6E8; }
.talk-card { background: var(--white); border: 1px solid var(--line); border-radius: 10px; padding: 24px 26px; }
.talk-card h4 { font-family: var(--serif); font-size: 15.5px; margin: 0 0 6px; color: var(--ink); }
.talk-card .tk-who { font-size: 12px; color: var(--ink-4); margin-bottom: 16px; }
.talk-blk { margin-bottom: 14px; }
.talk-blk b { display: block; font-size: 12px; letter-spacing: .12em; color: var(--cinnabar); margin-bottom: 6px; }
.talk-blk p, .talk-blk li { font-size: 13px; color: var(--ink-2); line-height: 1.95; }
.talk-blk ol { margin: 0; padding-left: 20px; }
.talk-blk .tk-open { padding: 12px 14px; background: var(--line-2); border-radius: 6px; }
@media print { .talk-chips { display: none !important; } }

/* ---- v92：名单行内删除 ---- */
.tb .row-del { color: var(--ink-4); cursor: pointer; font-size: 12px; white-space: nowrap; margin-left: 10px; }
.tb .row-del:hover { color: var(--bad); text-decoration: underline; }

/* ============================================================
   v93：找回报告 · 导出 PDF · 班级对照 · 报名状态 · 物料中心
   ============================================================ */

/* ---- 核验页分栏 ---- */
.vf-tabs { display: flex; gap: 8px; margin: 0 0 16px; flex-wrap: wrap; }
.vf-tabs button {
  font: inherit; font-size: 13px; cursor: pointer; padding: 9px 18px; border-radius: 999px;
  border: 1px solid var(--line); background: var(--white); color: var(--ink-3); transition: all .16s;
}
.vf-tabs button:hover { border-color: var(--cinnabar); color: var(--cinnabar); }
.vf-tabs button.on { background: var(--cinnabar); border-color: var(--cinnabar); color: #FFF6E8; }

/* ---- 找回报告 ---- */
.find-card { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 22px 24px; }
.find-card h3 { font-family: var(--serif); font-size: 16px; margin: 0 0 6px; }
.find-sub { font-size: 12.5px; color: var(--ink-3); line-height: 1.85; margin-bottom: 16px; }
.find-form { display: flex; gap: 10px; flex-wrap: wrap; }
.find-form input {
  font: inherit; font-size: 14px; padding: 11px 14px; border-radius: 6px;
  border: 1px solid var(--line); background: var(--white); color: var(--ink);
}
.find-form input:first-child { flex: 1 1 200px; }
.find-form input:nth-child(2) { flex: 0 0 150px; letter-spacing: .12em; }
.find-form input:focus { outline: none; border-color: var(--cinnabar); }
.find-tip { font-size: 11.5px; color: var(--ink-4); line-height: 1.8; margin-top: 14px; }
.find-empty {
  margin-top: 14px; padding: 13px 15px; font-size: 12.5px; line-height: 1.9;
  color: var(--ink-3); background: var(--line-2); border-radius: 6px;
}
.find-count { margin: 16px 0 10px; font-size: 12.5px; color: var(--ink-3); }
.find-count b { color: var(--cinnabar); font-size: 15px; }
.find-row { border: 1px solid var(--line); border-radius: 8px; padding: 13px 15px; margin-bottom: 9px; background: var(--white); }
.find-row-h { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.find-row-h b { font-size: 13.5px; color: var(--ink); }
.find-score { font-family: var(--num); font-size: 12.5px; color: var(--cinnabar); font-weight: 600; }
.find-row-b { display: flex; justify-content: space-between; gap: 10px; margin: 7px 0 10px; font-size: 12px; color: var(--ink-4); flex-wrap: wrap; }
.find-row-b .mono { font-family: ui-monospace, Consolas, monospace; letter-spacing: .06em; color: var(--ink-2); }
.find-row-a { display: flex; gap: 8px; flex-wrap: wrap; }

/* ---- 从云端取回的提示 ---- */
.restore-banner {
  display: flex; gap: 12px; align-items: flex-start; flex-wrap: wrap;
  background: var(--navy-soft); border-left: 3px solid var(--cinnabar);
  border-radius: 4px; padding: 13px 16px; margin-bottom: 18px;
}
.restore-banner b { font-size: 13px; color: var(--cinnabar); }
.restore-banner span { font-size: 12.5px; color: var(--ink-2); line-height: 1.85; flex: 1 1 260px; }

/* ---- 打印版页眉（只在纸上出现） ---- */
.print-head { display: none; }
@media print {
  .print-head {
    display: flex !important; justify-content: space-between; align-items: baseline; gap: 14px;
    border-bottom: 1pt solid #000; padding-bottom: 5pt; margin-bottom: 12pt;
    font-size: 9pt; color: #333;
  }
  .print-head b { font-family: var(--serif); font-size: 11pt; color: #000; margin-right: 6px; }
  .print-head i { font-style: normal; margin-left: 8pt; color: #555; }
  .restore-banner { display: none !important; }
  .rid-card { border: 1pt solid #999 !important; }
  .ai-models, .ai-head button { display: none !important; }
  .sec, .panel { break-inside: auto; }
  .verdict, .stat-grid { break-inside: avoid; }
}

/* ---- 管理端：报名状态 ---- */
.sg-bar { display: flex; gap: 7px; flex-wrap: wrap; align-items: center; margin-bottom: 12px; }
.sg-bar button {
  font: inherit; font-size: 12.5px; cursor: pointer; padding: 7px 13px; border-radius: 999px;
  border: 1px solid var(--line); background: var(--white); color: var(--ink-3); transition: all .16s;
}
.sg-bar button b { font-family: var(--num); margin-left: 3px; }
.sg-bar button:hover { border-color: var(--cinnabar); color: var(--cinnabar); }
.sg-bar button.on { background: var(--ink); border-color: var(--ink); color: #F8F1E4; }
.sg-hint { font-size: 11.5px; color: var(--ink-4); margin-left: auto; }
@media (max-width: 720px) { .sg-hint { margin-left: 0; } }

.sg-sel {
  font: inherit; font-size: 12px; padding: 4px 6px; border-radius: 5px; cursor: pointer;
  border: 1px solid var(--line); background: var(--white); color: var(--ink-2);
}
.sg-sel.st-new { border-color: #D9C08A; background: #FBF3DF; color: #7A5A14; }
.sg-sel.st-interview { border-color: #A9BEDB; background: #EAF1FA; color: #2C527F; }
.sg-sel.st-pass { border-color: #A8C9B4; background: #E9F4EC; color: var(--ok); }
.sg-sel.st-fail { border-color: #DDB2AC; background: #FAEAE7; color: var(--bad); }
.sg-sel:focus { outline: none; box-shadow: 0 0 0 2px rgba(179,53,31,.15); }
.sg-note {
  font: inherit; font-size: 12px; padding: 5px 7px; width: 100%; max-width: 130px;
  border: 1px solid transparent; border-radius: 5px; background: transparent; color: var(--ink-2);
}
.sg-note:hover { border-color: var(--line); background: var(--white); }
.sg-note:focus { outline: none; border-color: var(--cinnabar); background: var(--white); }

/* ---- 教师端：班级名单对照 ---- */
.roster-box { display: grid; grid-template-columns: 1fr 190px; gap: 14px; align-items: start; }
@media (max-width: 760px) { .roster-box { grid-template-columns: 1fr; } }
.roster-box textarea {
  font: inherit; font-size: 13px; line-height: 1.9; padding: 13px 15px; min-height: 168px; resize: vertical;
  border: 1px solid var(--line); border-radius: 8px; background: var(--white); color: var(--ink);
}
.roster-box textarea:focus { outline: none; border-color: var(--cinnabar); }
.roster-side { display: flex; flex-direction: column; gap: 8px; }
.roster-side .btn { justify-content: center; }
.roster-sum {
  font-size: 12px; color: var(--ink-4); line-height: 1.8; padding: 10px 12px;
  background: var(--line-2); border-radius: 6px;
}
.roster-sum b { color: var(--ink); font-family: var(--num); }
.roster-sum b.miss { color: var(--bad); }

.rs-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-top: 18px; }
@media (max-width: 620px) { .rs-stats { grid-template-columns: repeat(2, 1fr); } }
.rs-st { background: var(--card); border: 1px solid var(--line); border-radius: 8px; padding: 13px 14px; }
.rs-st b { display: block; font-family: var(--num); font-size: 24px; line-height: 1.1; color: var(--ink); }
.rs-st span { font-size: 11.5px; color: var(--ink-4); }
.rs-st.ok b { color: var(--ok); }
.rs-st.miss b { color: var(--bad); }

.rs-callout { margin-top: 14px; background: var(--card); border: 1px solid var(--line); border-left: 3px solid var(--bad); border-radius: 4px; padding: 16px 18px; }
.rs-callout.good { border-left-color: var(--ok); }
.rs-callout.warn { border-left-color: var(--warn); }
.rs-callout > b { font-size: 13.5px; display: block; margin-bottom: 10px; }
.rs-callout p { font-size: 12.5px; color: var(--ink-3); line-height: 1.9; }
.rs-names { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.rs-names span {
  font-size: 12.5px; padding: 4px 10px; border-radius: 4px;
  background: var(--line-2); color: var(--ink-2); border: 1px solid var(--line);
}
.rs-names.miss span { background: #FAEAE7; border-color: #EBCFC9; color: var(--bad); }
.rs-tpl {
  font-size: 12px; line-height: 1.9; color: var(--ink-3); background: var(--line-2);
  border-radius: 6px; padding: 11px 13px; margin-bottom: 12px;
}
.rs-acts { display: flex; gap: 8px; flex-wrap: wrap; }
.rs-done { margin-top: 14px; }
.rs-done > b { font-size: 12.5px; color: var(--ink-2); display: block; margin-bottom: 8px; }
.rs-tip { font-size: 11.5px; color: var(--ink-4); line-height: 1.8; margin-top: 14px; }

@media print { .rs-acts, .roster-side, .roster-box textarea { display: none !important; } }


/* ============================================================
   v9.6 · 昼 / 夜 手动切换
   ------------------------------------------------------------
   <html data-theme="light|dark">，选择存 localStorage('zc_theme')
   昼：原设计（首页墨域 + 功能页纸域，黑白交替的编辑部版式）
   夜：纸域全部翻成墨色，首页的纸面章节也随之入夜，整站统一深底
   ============================================================ */

/* ---------- 切换按钮（挂在顶栏里） ---------- */
.theme-sw {
  flex: none; display: inline-flex; align-items: center; gap: 7px;
  padding: 6px 13px 7px 11px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--hair-2); background: transparent; color: var(--fog);
  font-family: inherit; font-size: 12px; letter-spacing: .1em; line-height: 1.3;
  -webkit-appearance: none; appearance: none; white-space: nowrap;
  transition: border-color .2s, background .2s, color .2s, transform .14s, box-shadow .2s;
}
.theme-sw .ts-ic { font-size: 12.5px; line-height: 1; }
.theme-sw:hover { border-color: var(--gold); color: var(--snow); background: rgba(198, 161, 91, .12); }
.theme-sw:active { transform: scale(.96); }
.theme-sw:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
.light .theme-sw { border-color: var(--line); color: var(--ink-3); }
.light .theme-sw:hover { border-color: var(--cinnabar); color: var(--cinnabar); background: rgba(179, 53, 31, .07); }
html[data-theme="dark"] .theme-sw { border-color: var(--hair-2); color: var(--fog); background: rgba(233, 226, 210, .04); }
html[data-theme="dark"] .theme-sw:hover { border-color: var(--gold); color: var(--gold-2); background: rgba(198, 161, 91, .16); }
.theme-sw-fab {
  position: fixed; right: 16px; bottom: 16px; z-index: 95;
  background: var(--inkbg); border-color: var(--gold); color: var(--gold-2);
  padding: 10px 15px 10px 13px; box-shadow: 0 12px 30px -10px rgba(0, 0, 0, .6);
}
@media (max-width: 720px) {
  .theme-sw { order: 1; margin-left: auto; padding: 5px 11px 6px 9px; font-size: 11.5px; gap: 6px; }
  .theme-sw .ts-ic { font-size: 12px; }
}

/* ---------- 黑夜：纸域整套变量反转 ---------- */
html[data-theme="dark"] {
  color-scheme: dark;
  --paper: #12100C;
  --cream: #17140E;
  --card: #1B1710;
  --white: #1D1912;
  --ink: #F2EDDF;
  --ink-2: #DCD4C2;
  --ink-3: #AFA690;
  --muted: #8C8471;
  --ink-4: #938B77;
  --line: #2E2921;
  --line-2: #242019;
  --navy-soft: #2C1B16;
  --brand: #E0714C;
  --navy: #E0714C;
  --blue: #E0714C;
  --blue-2: #F08A67;
  --cinnabar: #D2522E;
  --cinnabar-b: #EC7250;
  --seal: #D6482C;
  --ok: #63C79A;
  --warn: #E3B45F;
  --bad: #F0806A;
  --grad: linear-gradient(96deg, #C9452A, #E4643F);
  --grad-soft: linear-gradient(96deg, rgba(233, 105, 74, .16), rgba(233, 105, 74, .10));
  --sh-1: 0 1px 2px rgba(0, 0, 0, .45), 0 10px 30px -18px rgba(0, 0, 0, .85);
  --sh-2: 0 2px 6px rgba(0, 0, 0, .55), 0 24px 48px -28px rgba(0, 0, 0, .92);
}
html[data-theme="dark"] body { background: var(--paper); }

/* 顶栏 / 底部工具条：半透明底色跟着一起入夜 */
html[data-theme="dark"] .light .topbar { background: rgba(18, 16, 12, .9); }
html[data-theme="dark"] .toolbar { background: rgba(18, 16, 12, .93); border-top-color: var(--line); }

/* 首页纸面章节：墨线改成淡线，别在夜里刺眼 */
html[data-theme="dark"] .paper .sec-head { border-bottom-color: var(--line); }
html[data-theme="dark"] .paper .sec-head .no { -webkit-text-stroke: 1px rgba(242, 237, 223, .26); }
html[data-theme="dark"] .paper-card,
html[data-theme="dark"] .toc-card { border-color: rgba(242, 237, 223, .38); }
html[data-theme="dark"] .paper-card { box-shadow: 14px 14px 0 rgba(0, 0, 0, .72), 0 40px 90px -30px rgba(0, 0, 0, .9); }
html[data-theme="dark"] .toc-card { box-shadow: 10px 10px 0 rgba(0, 0, 0, .42); }
html[data-theme="dark"] .pc-head { border-bottom-color: rgba(242, 237, 223, .42); }
html[data-theme="dark"] .pc-seal { background: rgba(20, 17, 12, .92); box-shadow: 0 0 0 4px rgba(18, 16, 12, .9); }
html[data-theme="dark"] .p-line { border-top-color: rgba(242, 237, 223, .42); }
html[data-theme="dark"] .profile-side { border-right-color: rgba(242, 237, 223, .26); }
html[data-theme="dark"] .p-photo::after { border-color: rgba(242, 237, 223, .26); }
html[data-theme="dark"] .paper .btn-ghost { border-color: var(--line); color: var(--ink-2); }
html[data-theme="dark"] .paper .btn-ghost:hover { background: var(--ink); color: var(--paper); }
html[data-theme="dark"] .aw-row:hover { background: rgba(236, 114, 80, .1); }

/* 浅色药丸 / 状态标：换成低饱和的深底同色系 */
html[data-theme="dark"] .tagx.g { background: rgba(99, 199, 154, .14); border-color: rgba(99, 199, 154, .34); }
html[data-theme="dark"] .tagx.w { background: rgba(227, 180, 95, .14); border-color: rgba(227, 180, 95, .32); }
html[data-theme="dark"] .tagx.r { background: rgba(240, 128, 106, .14); border-color: rgba(240, 128, 106, .32); }
html[data-theme="dark"] .vf-card.ok .vf-badge,
html[data-theme="dark"] .vf-status.ok,
html[data-theme="dark"] .e-s k { background: rgba(99, 199, 154, .14); }
html[data-theme="dark"] .vf-card.warn .vf-badge,
html[data-theme="dark"] .vf-status.warn,
html[data-theme="dark"] .e-tier.mid,
html[data-theme="dark"] .e-warn { background: rgba(227, 180, 95, .14); }
html[data-theme="dark"] .vf-card.bad .vf-badge,
html[data-theme="dark"] .e-tier.hot,
html[data-theme="dark"] .e-r k { background: rgba(240, 128, 106, .14); }
html[data-theme="dark"] .sg-sel.st-new { background: rgba(227, 180, 95, .14); border-color: rgba(227, 180, 95, .36); color: var(--warn); }
html[data-theme="dark"] .sg-sel.st-interview { background: rgba(120, 165, 220, .14); border-color: rgba(120, 165, 220, .36); color: #9CC0EC; }
html[data-theme="dark"] .sg-sel.st-pass { background: rgba(99, 199, 154, .14); border-color: rgba(99, 199, 154, .36); color: var(--ok); }
html[data-theme="dark"] .sg-sel.st-fail,
html[data-theme="dark"] .rs-names.miss span { background: rgba(240, 128, 106, .14); border-color: rgba(240, 128, 106, .34); }

/* 报告里的数据条：深底上把固定的深色数据色提亮一档 */
html[data-theme="dark"] .dim .dtrack > i { filter: brightness(1.45) saturate(1.05); }
html[data-theme="dark"] .dim .dv { filter: brightness(1.6) saturate(1.05); }

/* 以墨色为底的选中态：夜里反过来用朱砂，别变成"浅底浅字" */
html[data-theme="dark"] .pt-tabs button.on,
html[data-theme="dark"] .sg-bar button.on { background: var(--cinnabar); border-color: var(--cinnabar); color: #FFF6E8; }
html[data-theme="dark"] .toast { background: #F2EDDF; color: #16130D; }

/* 二维码 / 打印稿：始终保持白底黑码，别为了夜里好看扫不出来 */
html[data-theme="dark"] .rid-qr,
html[data-theme="dark"] .entry-qr { background: #fff; border-color: var(--line); }

/* ---- 打印：一律回到纸白，避免夜里打印出浅字白纸 ---- */
@media print {
  html[data-theme="dark"] {
    --paper: #fff; --cream: #fff; --card: #fff; --white: #fff;
    --ink: #000; --ink-2: #1c1a14; --ink-3: #3d3a30; --muted: #555; --ink-4: #555;
    --line: #ddd; --line-2: #eee;
    --cinnabar: #8C2F1E; --cinnabar-b: #8C2F1E; --blue: #000; --brand: #8C2F1E;
  }
  .theme-sw { display: none !important; }
}
