/* ═══════════════════════════════════════════════════════════════
   全国工程勘察设计大师名录 · 官方数据档案
   视觉方向：政务庄重 / 档案文献风
   主色取住建部蓝，辅以朱砂印色与铜金线，底色为档案纸
   ═══════════════════════════════════════════════════════════════ */

:root{
  /* 墨与蓝 */
  --ink:#111a26;
  --navy:#0b1f38;
  --navy-2:#123054;
  --navy-3:#1d4a80;
  --navy-4:#2f6aa8;
  /* 朱砂印色 */
  --seal:#a32b2b;
  --seal-2:#8d1f1f;
  --seal-soft:#c8584f;
  /* 铜金 */
  --gold:#a98a53;
  --gold-2:#d9c49a;
  --gold-3:#efe4cc;
  /* 档案纸 */
  --paper:#f6f3ec;
  --paper-2:#ede8dc;
  --paper-3:#e3dccc;
  --card:#fffdf8;
  --line:#ded6c5;
  --line-2:#cdc3ac;
  /* 文字 */
  --body:#2b3441;
  --muted:#7c7566;
  --muted-2:#9a927f;

  --font-display:"Songti SC","STSong","Noto Serif SC","Source Han Serif SC","Source Han Serif CN","SimSun","STZhongsong",serif;
  --font-body:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC","Source Han Sans SC",-apple-system,sans-serif;
  --font-num:"Songti SC","STSong",Georgia,"Times New Roman",serif;

  --shadow-1:0 1px 2px rgba(17,26,38,.05), 0 6px 16px -10px rgba(17,26,38,.22);
  --shadow-2:0 2px 4px rgba(17,26,38,.06), 0 18px 40px -18px rgba(11,31,56,.35);
  --shadow-3:0 30px 80px -30px rgba(11,31,56,.55);

  --wrap:1240px;
  --r:3px;
}

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

html{scroll-behavior:smooth}

body{
  margin:0;
  background:var(--paper);
  color:var(--body);
  font-family:var(--font-body);
  font-size:15px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  /* 档案纸底纹：极淡方格 + 柔和渐层 */
  background-image:
    repeating-linear-gradient(0deg, rgba(11,31,56,.028) 0 1px, transparent 1px 26px),
    repeating-linear-gradient(90deg, rgba(11,31,56,.028) 0 1px, transparent 1px 26px),
    radial-gradient(1200px 620px at 12% -8%, #fffdf7 0%, transparent 62%),
    radial-gradient(980px 520px at 96% 4%, #f2f0e7 0%, transparent 60%);
  background-attachment:fixed;
}

/* 纸张颗粒 */
.grain{
  position:fixed; inset:0; z-index:0; pointer-events:none;
  opacity:.4; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
}

/* 四周压暗，营造卷宗边缘 */
.vignette{
  position:fixed; inset:0; z-index:0; pointer-events:none;
  background:radial-gradient(120% 92% at 50% 40%, transparent 58%, rgba(11,31,56,.07) 100%);
}

.wrap{width:min(var(--wrap), calc(100% - 48px)); margin-inline:auto; position:relative; z-index:1}

.skip-link{
  position:absolute; left:-9999px; top:0; z-index:99;
  background:var(--navy); color:#fff; padding:10px 16px; text-decoration:none;
}
.skip-link:focus{left:12px; top:12px}

a{color:var(--navy-3)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--seal-soft); outline-offset:2px;
}

/* ══════════ 页头 ══════════ */
.masthead{
  position:relative; z-index:2;
  background:
    linear-gradient(180deg, #0a1c33 0%, var(--navy) 46%, #0d2440 100%);
  color:var(--gold-3);
  padding:clamp(30px,5vw,64px) 0 clamp(28px,4vw,52px);
  overflow:hidden;
}
/* 页头底纹：经纬网格 + 右上光晕 */
.masthead::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background-image:
    repeating-linear-gradient(0deg, rgba(217,196,154,.055) 0 1px, transparent 1px 34px),
    repeating-linear-gradient(90deg, rgba(217,196,154,.055) 0 1px, transparent 1px 34px),
    radial-gradient(760px 420px at 88% 0%, rgba(47,106,168,.42), transparent 68%);
}
.masthead__rule{
  position:absolute; left:0; right:0; bottom:0; height:5px;
  background:linear-gradient(90deg, var(--seal) 0 14%, var(--gold) 14% 100%);
}
.masthead__rule::after{
  content:""; position:absolute; left:0; right:0; top:5px; height:1px;
  background:rgba(217,196,154,.35);
}
.masthead__inner{
  display:grid; grid-template-columns:1fr auto; gap:clamp(24px,4vw,56px); align-items:start;
}

.eyebrow{
  margin:0 0 clamp(14px,2.2vw,22px);
  font-size:12.5px; letter-spacing:.14em; color:var(--gold-2);
  display:flex; flex-wrap:wrap; align-items:center; gap:10px;
}
.eyebrow__sep{color:var(--gold)}

.masthead__title{margin:0; display:flex; flex-direction:column; gap:12px}
.masthead__title-cn{
  font-family:var(--font-display);
  font-size:clamp(30px,5.2vw,58px);
  font-weight:700; line-height:1.12; letter-spacing:.1em;
  color:#fffdf6;
  text-shadow:0 2px 22px rgba(0,0,0,.4);
}
.masthead__title-en{
  font-family:var(--font-num);
  font-size:clamp(10.5px,1.15vw,13px);
  letter-spacing:.34em; text-transform:uppercase;
  color:var(--gold); padding-left:.34em;
}
.masthead__lede{
  margin:clamp(18px,2.6vw,28px) 0 0;
  max-width:64ch; font-size:14.5px; line-height:1.95;
  color:rgba(239,228,204,.82);
  border-left:2px solid var(--seal); padding-left:16px;
}
.masthead__lede b{color:#fff; font-weight:600}

.masthead__meta{
  margin:clamp(24px,3.4vw,38px) 0 0;
  display:grid; grid-template-columns:repeat(4,minmax(88px,auto)); gap:clamp(16px,3vw,42px);
  padding-top:20px; border-top:1px solid rgba(217,196,154,.24);
}
.masthead__meta div{display:flex; flex-direction:column; gap:2px}
.masthead__meta dt{font-size:11.5px; letter-spacing:.2em; color:var(--gold); order:2}
.masthead__meta dd{
  margin:0; order:1; font-family:var(--font-num); font-size:clamp(24px,3.4vw,38px);
  font-weight:600; color:#fffdf6; line-height:1.1;
  font-variant-numeric:tabular-nums;
}
.masthead__meta dd i{font-style:normal; font-size:12.5px; color:var(--gold-2); margin-left:4px; letter-spacing:.08em}
.masthead__date{font-size:clamp(15px,1.5vw,19px); letter-spacing:.04em}

/* 印章 */
.seal{
  display:grid; place-items:center;
  background:linear-gradient(160deg, #b93a34, var(--seal) 52%, var(--seal-2));
  color:#fff5ef; border-radius:4px;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.5), inset 0 0 0 6px var(--seal), 0 12px 30px -12px rgba(0,0,0,.6);
  font-family:var(--font-display); font-weight:700;
  position:relative; overflow:hidden;
}
.seal::after{
  content:""; position:absolute; inset:0; opacity:.3; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='s'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23s)'/%3E%3C/svg%3E");
}
.seal--lg{width:132px; height:132px; transform:rotate(-2.4deg)}
.seal__txt{font-size:27px; line-height:1.22; letter-spacing:.06em; text-align:center}

.masthead__seal{display:flex; flex-direction:column; align-items:center; gap:14px}
.masthead__seal-cap{
  margin:0; text-align:center; font-size:11px; letter-spacing:.24em;
  color:var(--gold); line-height:1.9;
}

/* ══════════ 区块通用 ══════════ */
.panel{padding:clamp(44px,7vw,92px) 0; position:relative; z-index:1}
.panel--alt{
  background:linear-gradient(180deg, rgba(237,232,220,.75), rgba(246,243,236,.2));
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.panel__head{
  display:flex; gap:clamp(14px,2vw,24px); align-items:flex-start;
  margin-bottom:clamp(28px,4vw,48px);
  padding-bottom:20px; border-bottom:2px solid var(--navy);
  position:relative;
}
.panel__head::after{
  content:""; position:absolute; left:0; bottom:-6px; width:96px; height:3px; background:var(--seal);
}
.panel__index{
  margin:0; font-family:var(--font-display); font-size:clamp(30px,4vw,46px);
  line-height:1; color:var(--gold-2);
  border-right:1px solid var(--line-2); padding-right:clamp(14px,2vw,22px);
  -webkit-text-stroke:.5px var(--gold);
}
.panel__title{
  margin:0; font-family:var(--font-display); font-size:clamp(21px,2.7vw,30px);
  font-weight:700; letter-spacing:.14em; color:var(--navy);
}
.panel__sub{margin:6px 0 0; font-size:13px; color:var(--muted); letter-spacing:.02em}

.disclosure{
  margin:clamp(26px,3.4vw,40px) 0 0; padding:16px 20px;
  background:rgba(239,228,204,.5); border-left:3px solid var(--gold);
  font-size:13px; line-height:1.95; color:#5d5647;
}
.disclosure b{color:var(--navy); letter-spacing:.04em}

/* ══════════ 统计数字 ══════════ */
.figures{
  display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); grid-auto-rows:1fr;
  gap:1px; background:var(--line-2);
  border:1px solid var(--line-2); margin-bottom:clamp(26px,3.6vw,44px);
}
.figure{
  background:var(--card); padding:24px 22px 20px; position:relative;
  display:flex; flex-direction:column; gap:4px;
}
.figure::before{
  content:""; position:absolute; left:0; top:0; width:3px; height:0;
  background:var(--seal); transition:height .55s cubic-bezier(.2,.7,.2,1);
}
.figure.is-in::before{height:100%}
.figure__key{font-size:11.5px; letter-spacing:.2em; color:var(--muted)}
.figure__val{
  font-family:var(--font-num); font-size:clamp(30px,3.8vw,44px); font-weight:600;
  color:var(--navy); line-height:1.05; font-variant-numeric:tabular-nums;
}
.figure__val i{font-style:normal; font-size:13px; color:var(--muted); margin-left:5px; letter-spacing:.08em}
.figure__hint{font-size:12px; color:var(--muted-2); border-top:1px dashed var(--line); padding-top:8px; margin-top:auto}

/* ══════════ 图表 ══════════ */
.charts{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(18px,2.4vw,26px)}
.chart{
  background:var(--card); border:1px solid var(--line); padding:clamp(18px,2.4vw,26px);
  box-shadow:var(--shadow-1);
}
.chart--wide{grid-column:1/-1}
.chart__head{margin-bottom:22px; padding-bottom:14px; border-bottom:1px solid var(--line)}
.chart__title{
  margin:0; font-family:var(--font-display); font-size:17px; font-weight:700;
  letter-spacing:.12em; color:var(--navy);
}
.chart__note{margin:6px 0 0; font-size:12px; color:var(--muted-2); line-height:1.7}

/* 纵列柱 */
.cols{
  display:grid; grid-auto-flow:column; grid-auto-columns:1fr;
  gap:clamp(6px,1.2vw,16px); align-items:stretch;
  height:220px; padding-bottom:32px; position:relative;
  border-bottom:1px solid var(--line-2);
}
.cols::before{
  content:""; position:absolute; left:0; right:0; top:0; bottom:32px;
  background:repeating-linear-gradient(0deg, rgba(11,31,56,.055) 0 1px, transparent 1px 44px);
}
.col{display:flex; flex-direction:column; justify-content:flex-end; align-items:center; height:100%; gap:6px; position:relative; z-index:1; min-height:0}
.col__val{font-family:var(--font-num); font-size:13px; font-weight:600; color:var(--navy); font-variant-numeric:tabular-nums}
.col__barwrap{width:100%; flex:1; min-height:0; display:flex; align-items:flex-end; justify-content:center}
.col__bar{
  width:min(74%,52px); height:0; border-radius:2px 2px 0 0;
  background:linear-gradient(180deg, var(--navy-4), var(--navy-2) 55%, var(--navy));
  transition:height .9s cubic-bezier(.2,.75,.25,1) var(--d,0ms);
  position:relative;
}
.col__bar::after{content:""; position:absolute; inset:0 0 auto; height:3px; background:var(--gold)}
.is-in .col__bar{height:calc(var(--h) * 1%)}
.col__key{
  position:absolute; top:100%; margin-top:8px; line-height:1.4;
  font-size:11.5px; color:var(--muted); letter-spacing:.06em; white-space:nowrap;
}
.col--hl .col__bar{background:linear-gradient(180deg, var(--seal-soft), var(--seal) 60%, var(--seal-2))}
.col--hl .col__val{color:var(--seal)}

/* 横向排行条 */
.rank{display:grid; gap:9px}
.rank__row{display:grid; grid-template-columns:minmax(72px,7.4em) 1fr auto; gap:12px; align-items:center}
.rank__key{
  font-size:12.5px; color:var(--body); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  letter-spacing:.02em;
}
.rank__track{height:9px; background:var(--paper-2); position:relative; overflow:hidden}
.rank__fill{
  position:absolute; inset:0 auto 0 0; width:0;
  background:linear-gradient(90deg, var(--navy-4), var(--navy-2));
  transition:width .85s cubic-bezier(.2,.75,.25,1) var(--d,0ms);
}
.is-in .rank__fill{width:calc(var(--h) * 1%)}
.rank__val{
  font-family:var(--font-num); font-size:12.5px; color:var(--navy); font-weight:600;
  font-variant-numeric:tabular-nums; min-width:2.6em; text-align:right;
}
.rank__row--top .rank__fill{background:linear-gradient(90deg, var(--seal-soft), var(--seal))}
.rank__row--top .rank__val{color:var(--seal)}
.rank__row--muted .rank__key{color:var(--muted-2); font-style:italic}
.rank--2col{grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px 30px}

/* ══════════ 筛选器 ══════════ */
.filters{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(168px,1fr));
  gap:14px 16px; align-items:end;
  padding:clamp(18px,2.4vw,24px);
  background:var(--card); border:1px solid var(--line);
  box-shadow:var(--shadow-1);
}
.field{display:flex; flex-direction:column; gap:7px; min-width:0}
.field--search{grid-column:span 2}
.field__label{font-size:11.5px; letter-spacing:.18em; color:var(--muted)}
.field input,.field select{
  font-family:inherit; font-size:14px; color:var(--body);
  background:var(--paper); border:1px solid var(--line-2); border-radius:var(--r);
  padding:10px 12px; width:100%; transition:border-color .2s, background .2s, box-shadow .2s;
  appearance:none;
}
.field select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='7'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%237c7566' stroke-width='1.4'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 12px center; padding-right:32px;
}
.field input:hover,.field select:hover{border-color:var(--gold)}
.field input:focus,.field select:focus{
  border-color:var(--navy-3); background:#fff; box-shadow:0 0 0 3px rgba(29,74,128,.1); outline:none;
}
.field input::placeholder{color:var(--muted-2)}

.btn{
  font-family:inherit; font-size:13px; letter-spacing:.1em; cursor:pointer;
  padding:11px 20px; border-radius:var(--r); border:1px solid var(--navy-2);
  background:transparent; color:var(--navy); transition:all .22s;
  white-space:nowrap;
}
.btn:hover{background:rgba(18,48,84,.08)}
.btn--ghost{border-color:var(--line-2); color:var(--muted)}
.btn--ghost:hover{border-color:var(--seal); color:var(--seal); background:rgba(163,43,43,.05)}
.btn--solid{background:var(--navy); color:#fffdf6; border-color:var(--navy); padding:13px 40px; letter-spacing:.18em}
.btn--solid:hover{background:var(--navy-3); border-color:var(--navy-3)}

.resultbar{
  display:flex; flex-wrap:wrap; gap:12px 18px; align-items:center; justify-content:space-between;
  margin:clamp(20px,2.6vw,30px) 0 18px; padding-bottom:14px; border-bottom:1px solid var(--line-2);
}
.resultbar__count{margin:0; font-size:13.5px; color:var(--muted); letter-spacing:.04em}
.resultbar__count b{font-family:var(--font-num); font-size:20px; color:var(--seal); margin:0 4px; font-weight:600}
.chips{display:flex; flex-wrap:wrap; gap:8px}
.chip{
  display:inline-flex; align-items:center; gap:8px;
  font-size:12px; letter-spacing:.04em; padding:5px 10px 5px 12px;
  background:rgba(18,48,84,.07); border:1px solid rgba(18,48,84,.16); color:var(--navy);
  border-radius:999px;
}
.chip button{
  border:0; background:transparent; cursor:pointer; color:inherit; opacity:.6;
  font-size:13px; line-height:1; padding:0 2px;
}
.chip button:hover{opacity:1; color:var(--seal)}

/* ══════════ 名录卡片 ══════════ */
.grid{
  display:grid; grid-template-columns:repeat(auto-fill,minmax(326px,1fr));
  gap:clamp(14px,1.8vw,20px);
}
.card{
  position:relative; text-align:left; cursor:pointer; font-family:inherit;
  color:inherit; text-decoration:none;
  background:var(--card); border:1px solid var(--line); padding:20px 20px 16px;
  transition:transform .28s cubic-bezier(.2,.7,.2,1), box-shadow .28s, border-color .28s;
  box-shadow:var(--shadow-1); overflow:hidden;
}
.card::before{
  content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:var(--seal); transform:scaleY(0); transform-origin:top;
  transition:transform .38s cubic-bezier(.2,.7,.2,1);
}
.card:hover{transform:translateY(-4px); box-shadow:var(--shadow-2); border-color:var(--gold-2)}
.card:hover::before{transform:scaleY(1)}

.avatar{
  width:60px; height:60px; border-radius:3px; display:grid; place-items:center;
  font-family:var(--font-display); font-size:29px; font-weight:700; color:#fff6f0;
  background:linear-gradient(160deg,#b93a34,var(--seal) 55%,var(--seal-2));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.34), 0 6px 14px -8px rgba(141,31,31,.9);
  position:relative; overflow:hidden;
}
.avatar::after{
  content:""; position:absolute; inset:0; opacity:.26; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.95' numOctaves='2'/%3E%3C/filter%3E%3Crect width='90' height='90' filter='url(%23a)'/%3E%3C/svg%3E");
}
.avatar--revoked{background:linear-gradient(160deg,#8d8d8d,#6b6b6b 55%,#4f4f4f); box-shadow:inset 0 0 0 1px rgba(255,255,255,.28)}
.avatar--retired{background:linear-gradient(160deg,#4a6d8f,var(--navy-3) 55%,var(--navy-2)); box-shadow:inset 0 0 0 1px rgba(255,255,255,.28)}

.card__body{min-width:0; display:flex; flex-direction:column; gap:8px}
.card__head{display:flex; align-items:baseline; flex-wrap:wrap; gap:8px}
.card__name{
  font-family:var(--font-display); font-size:21px; font-weight:700; color:var(--navy);
  letter-spacing:.09em; line-height:1.2;
}
.card__sex{font-size:11px; color:var(--seal); border:1px solid currentColor; padding:0 5px; border-radius:2px; letter-spacing:.1em}
.card__tags{display:flex; flex-wrap:wrap; gap:6px; margin-left:auto}
.tag{
  font-size:10.5px; letter-spacing:.1em; padding:2px 8px; border-radius:2px;
  border:1px solid; white-space:nowrap;
}
.tag--batch{color:var(--navy-3); border-color:rgba(29,74,128,.3); background:rgba(29,74,128,.07)}
.tag--on{color:#1f6b48; border-color:rgba(31,107,72,.3); background:rgba(31,107,72,.07)}
.tag--off{color:var(--muted); border-color:var(--line-2); background:rgba(124,117,102,.07)}
.tag--revoked{color:#fff; border-color:var(--seal-2); background:var(--seal)}

.card__meta{margin:0; display:flex; flex-direction:column; gap:3px; font-size:12.5px; color:var(--muted); line-height:1.7}
.card__meta span{display:flex; gap:8px; min-width:0}
.card__meta b{
  flex:0 0 4.6em; font-weight:400; color:var(--muted-2); letter-spacing:.08em;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.card__meta em{
  font-style:normal; color:var(--body); flex:1 1 auto; min-width:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.card__foot{
  margin-top:2px; padding-top:10px; border-top:1px dashed var(--line);
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  font-size:11.5px; color:var(--muted-2); letter-spacing:.08em;
}
.card__foot > span:first-child{
  flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.card__open{color:var(--seal); opacity:0; transform:translateX(-6px); transition:all .3s}
.card:hover .card__open,.card:focus-visible .card__open{opacity:1; transform:none}

.empty{
  margin:52px 0; text-align:center; color:var(--muted); font-size:14px; letter-spacing:.06em;
  padding:52px 20px; border:1px dashed var(--line-2); background:rgba(255,253,248,.5);
}
.more-wrap{display:flex; flex-direction:column; align-items:center; gap:12px; margin-top:clamp(28px,4vw,44px)}
.more-hint{margin:0; font-size:12px; color:var(--muted-2); letter-spacing:.08em}

/* ══════════ 数据说明 ══════════ */
.notice-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(310px,1fr)); gap:clamp(18px,2.4vw,26px)}
.notice{background:var(--card); border:1px solid var(--line); padding:clamp(20px,2.6vw,28px); box-shadow:var(--shadow-1)}
.notice--closed{border-style:dashed; border-color:var(--line-2); background:rgba(255,253,248,.6)}
.notice__title{
  margin:0 0 16px; font-family:var(--font-display); font-size:16px; font-weight:700;
  letter-spacing:.12em; color:var(--navy); display:flex; align-items:center; gap:10px;
  padding-bottom:12px; border-bottom:1px solid var(--line);
}
.dot{width:8px; height:8px; border-radius:50%; flex:none}
.dot--on{background:#1f6b48; box-shadow:0 0 0 3px rgba(31,107,72,.16)}
.dot--off{background:var(--muted-2); box-shadow:0 0 0 3px rgba(124,117,102,.16)}
.notice__list{margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:10px}
.notice__list li{
  font-size:13px; line-height:1.8; color:var(--body); padding-left:20px; position:relative;
}
.notice__list li::before{
  content:""; position:absolute; left:2px; top:.72em; width:7px; height:1px; background:var(--gold);
}
.notice--closed .notice__list li{color:var(--muted)}
.notice--closed .notice__list li::before{background:var(--muted-2)}
.notice__foot{
  margin:18px 0 0; padding-top:14px; border-top:1px dashed var(--line);
  font-size:12px; line-height:1.9; color:var(--muted);
}
.notice__foot strong{color:var(--seal); font-weight:600}
.notice-source{margin-top:clamp(18px,2.4vw,26px); background:var(--card); border:1px solid var(--line); padding:clamp(20px,2.6vw,28px); box-shadow:var(--shadow-1)}
.source-list{margin:0; display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:14px 26px}
.source-list div{display:flex; flex-direction:column; gap:3px; min-width:0}
.source-list dt{font-size:11.5px; letter-spacing:.18em; color:var(--muted)}
.source-list dd{margin:0; font-size:13px; color:var(--body); word-break:break-all}
.source-list a{word-break:break-all}

/* ══════════ 档案详情页（masters/XXXX.html 独立页面） ══════════ */
.page-detail{background-attachment:scroll}

.detail-top{
  position:relative; z-index:2;
  background:linear-gradient(180deg,#0a1c33 0%, var(--navy) 62%, #0d2440 100%);
  color:var(--gold-3); border-bottom:1px solid rgba(217,196,154,.28);
}
.detail-top__inner{
  display:flex; align-items:center; justify-content:space-between;
  gap:14px 22px; flex-wrap:wrap; padding:15px 0;
}
.backlink{
  display:inline-flex; align-items:center; gap:9px;
  font-family:var(--font-display); font-size:13.5px; letter-spacing:.12em;
  color:var(--gold-3); text-decoration:none; padding:7px 16px;
  border:1px solid rgba(217,196,154,.44); border-radius:2px;
  transition:background .2s, border-color .2s, color .2s;
}
.backlink:hover{background:var(--seal); border-color:var(--seal); color:#fff8f2}
.detail-top__crumb{margin:0; font-size:11.5px; letter-spacing:.2em; color:rgba(217,196,154,.82)}

.detail{padding:clamp(24px,4vw,50px) 0 clamp(30px,5vw,62px); position:relative; z-index:1}

.dossier{
  position:relative; background:var(--card);
  border:1px solid var(--gold); border-top-width:3px;
  box-shadow:var(--shadow-2); overflow:hidden;
  animation:unfurl .5s cubic-bezier(.2,.8,.25,1) both;
}

/* 名录内翻页 */
.detail-nav{
  margin-top:clamp(20px,3vw,30px);
  display:grid; grid-template-columns:1fr auto 1fr; gap:12px; align-items:stretch;
}
.detail-nav__step{
  display:flex; align-items:center; gap:12px; min-height:64px;
  padding:12px 18px; background:var(--card);
  border:1px solid var(--line); border-radius:2px;
  color:var(--body); text-decoration:none;
  transition:border-color .2s, box-shadow .2s, transform .2s;
}
.detail-nav__step:hover{border-color:var(--gold); box-shadow:var(--shadow-1); transform:translateY(-1px)}
.detail-nav__step[rel="next"]{justify-content:flex-end; text-align:right}
.detail-nav__step > span[aria-hidden]{color:var(--gold); font-size:15px; flex:none}
.detail-nav__step-txt{display:flex; flex-direction:column; gap:2px; min-width:0}
.detail-nav__step-txt em{font-style:normal; font-size:10.5px; letter-spacing:.18em; color:var(--muted-2)}
.detail-nav__step-txt b{
  font-family:var(--font-display); font-size:15.5px; font-weight:700;
  letter-spacing:.08em; color:var(--navy);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.detail-nav__step--none{
  justify-content:center; background:rgba(246,243,236,.5);
  border-style:dashed; color:var(--muted-2); cursor:default;
}
.detail-nav__step--none em{letter-spacing:.14em}
.detail-nav__all{
  display:inline-flex; align-items:center; justify-content:center;
  padding:0 28px; min-height:64px; text-decoration:none; border-radius:2px;
  background:var(--navy); border:1px solid var(--navy); color:var(--gold-3);
  font-family:var(--font-display); font-size:14px; letter-spacing:.16em;
  transition:background .2s, border-color .2s, color .2s;
}
.detail-nav__all:hover{background:var(--seal); border-color:var(--seal); color:#fff8f2}

.detail-foot-note{
  margin:22px 0 0; text-align:center;
  font-size:11.5px; line-height:1.9; letter-spacing:.04em; color:var(--muted-2);
}

@keyframes unfurl{
  from{opacity:0; transform:translateY(16px) scale(.985)}
  to{opacity:1; transform:none}
}

.dos-head{
  position:relative; padding:clamp(24px,3.6vw,38px) clamp(22px,3.4vw,40px) clamp(22px,3vw,32px);
  background:linear-gradient(160deg,#0a1c33,var(--navy) 55%,#12315a);
  color:var(--gold-3); display:grid; grid-template-columns:auto 1fr; gap:clamp(18px,3vw,30px); align-items:center;
}
.dos-head::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background-image:
    repeating-linear-gradient(0deg, rgba(217,196,154,.05) 0 1px, transparent 1px 28px),
    repeating-linear-gradient(90deg, rgba(217,196,154,.05) 0 1px, transparent 1px 28px);
}
.dos-head::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:3px;
  background:linear-gradient(90deg, var(--seal) 0 18%, var(--gold) 18% 100%);
}
.dos-head .avatar{width:82px; height:82px; font-size:39px; border-radius:4px}
.dos-id{margin:0 0 8px; font-size:11.5px; letter-spacing:.26em; color:var(--gold)}
.dos-name{
  margin:0; font-family:var(--font-display); font-size:clamp(26px,3.6vw,40px); font-weight:700;
  color:#fffdf6; letter-spacing:.12em; line-height:1.15; display:flex; align-items:baseline; gap:12px; flex-wrap:wrap;
}
.dos-name small{font-size:13px; letter-spacing:.16em; color:var(--gold-2); font-weight:400}
.dos-sub{margin:12px 0 0; display:flex; flex-wrap:wrap; gap:8px}
.dos-body{padding:clamp(22px,3.2vw,36px) clamp(22px,3.4vw,40px) clamp(26px,3.4vw,40px)}

.dos-sec{margin-bottom:clamp(22px,3vw,34px)}
.dos-sec:last-child{margin-bottom:0}
.dos-sec__title{
  margin:0 0 14px; font-family:var(--font-display); font-size:15px; font-weight:700;
  letter-spacing:.16em; color:var(--navy);
  display:flex; align-items:center; gap:12px;
}
.dos-sec__title::before{content:""; width:14px; height:2px; background:var(--seal); flex:none}
.dos-sec__title::after{content:""; flex:1; height:1px; background:var(--line); order:2}
.dos-sec__title span{order:1}
.dos-sec__title em{
  order:3; font-style:normal; font-size:10.5px; letter-spacing:.14em; color:var(--muted-2);
  border:1px dashed var(--line-2); padding:2px 8px; flex:none;
}

.dos-table{margin:0; display:grid; grid-template-columns:repeat(auto-fit,minmax(238px,1fr)); gap:1px; background:var(--line); border:1px solid var(--line)}
.dos-table div{background:var(--card); padding:13px 16px; display:flex; flex-direction:column; gap:4px; min-width:0}
.dos-table dt{font-size:11px; letter-spacing:.16em; color:var(--muted-2)}
.dos-table dd{margin:0; font-size:14px; color:var(--body); line-height:1.7; word-break:break-word}
.dos-table dd.is-empty{color:var(--muted-2); font-style:italic; font-size:13px}
.is-empty{color:var(--muted-2); font-style:italic; font-size:13px}
.dos-table dd strong{font-family:var(--font-display); color:var(--navy); font-weight:700; letter-spacing:.06em}

.missing-list{margin:0; padding:0; list-style:none; display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:1px; background:var(--line); border:1px dashed var(--line-2)}
.missing-list li{
  background:rgba(246,243,236,.66); padding:13px 16px; display:flex; flex-direction:column; gap:5px;
}
.missing-list dt{font-size:12.5px; color:var(--muted); letter-spacing:.04em}
.missing-list dd{
  margin:0; font-size:11px; letter-spacing:.12em; color:var(--muted-2);
  display:inline-flex; align-items:center; gap:6px;
}
.missing-list dd::before{content:""; width:6px; height:6px; border-radius:50%; background:var(--line-2)}

.stamp-note{
  margin:0 0 18px; padding:14px 18px; border:1px dashed var(--seal-soft);
  background:rgba(163,43,43,.045); font-size:12.5px; line-height:1.85; color:#7d4a45;
}
.stamp-note b{color:var(--seal); letter-spacing:.08em}

.dos-intro{
  margin:0; padding:16px 20px; background:rgba(239,228,204,.55);
  border-left:3px solid var(--seal); font-size:13.5px; line-height:1.95; color:#4c4436;
}
.dos-intro--none{
  background:rgba(246,243,236,.72); border-left-color:var(--line-2);
  color:var(--muted-2); font-style:italic; font-size:13px;
}

.dos-src{margin:0; display:grid; gap:9px; font-size:12px; color:var(--muted)}
.dos-src div{display:flex; gap:12px; align-items:baseline}
.dos-src dt{flex:0 0 5.4em; letter-spacing:.14em; color:var(--muted-2)}
.dos-src dd{margin:0; word-break:break-all; font-size:12px}
.dos-src code{
  font-family:var(--font-body); font-size:11.5px; background:var(--paper-2);
  padding:1px 6px; border:1px solid var(--line); color:#5d5647; letter-spacing:.02em;
}

/* ══════════ 页脚 ══════════ */
.footer{
  border-top:3px solid var(--navy); background:var(--navy); color:var(--gold-2);
  padding:clamp(28px,4vw,44px) 0; position:relative; z-index:1;
}
.footer__line{
  margin:0 0 8px; font-family:var(--font-display); font-size:15px; letter-spacing:.2em; color:#fffdf6;
}
.footer__note{margin:0; font-size:12px; letter-spacing:.06em; color:rgba(217,196,154,.78); line-height:1.9}

/* ══════════ 入场动效 ══════════ */
.reveal{opacity:0; transform:translateY(16px)}
.reveal.is-in{
  opacity:1; transform:none;
  transition:opacity .7s cubic-bezier(.2,.7,.2,1) var(--d,0ms), transform .7s cubic-bezier(.2,.7,.2,1) var(--d,0ms);
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .reveal{opacity:1; transform:none}
  .reveal.is-in{transition:none}
  .col__bar,.rank__fill{transition:none}
  .is-in .col__bar{height:calc(var(--h) * 1%)}
  .is-in .rank__fill{width:calc(var(--h) * 1%)}
  .dossier{animation:none}
}

/* ══════════ 响应式 ══════════ */
@media (max-width:1080px){
  .masthead__inner{grid-template-columns:1fr}
  .masthead__seal{flex-direction:row; align-items:center; gap:18px}
  .seal--lg{width:96px; height:96px}
  .seal__txt{font-size:20px}
  .masthead__seal-cap{text-align:left}
  .figures{grid-template-columns:repeat(3,minmax(0,1fr))}
  .charts{grid-template-columns:1fr}
  .rank--2col{grid-template-columns:1fr}
  .field--search{grid-column:1/-1}
}
@media (max-width:720px){
  .wrap{width:calc(100% - 32px)}
  .masthead__meta{grid-template-columns:repeat(2,1fr)}
  .figures{grid-template-columns:repeat(2,minmax(0,1fr))}
  .figure{padding:18px 16px 16px}
  .figure__val{font-size:26px}
  .figure__hint{font-size:11.5px}
  .grid{grid-template-columns:1fr}
  .panel__index{display:none}
  .panel__head{gap:0}
  .cols{height:176px}
  .rank__row{grid-template-columns:minmax(64px,6.6em) 1fr auto; gap:9px}
  .dos-head{grid-template-columns:1fr; justify-items:start}
  .dos-head .avatar{width:64px; height:64px; font-size:30px}
  .dos-table,.missing-list{grid-template-columns:1fr}
  .detail-top__inner{padding:12px 0}
  .detail-top__crumb{font-size:11px; letter-spacing:.12em}
  .detail-nav{grid-template-columns:1fr; gap:9px}
  .detail-nav__all{order:-1; min-height:52px; padding:0 18px}
  .detail-nav__step{min-height:56px; padding:11px 15px}
  .detail-nav__step-txt b{font-size:14.5px}
}
