/* Altered Items 页：左侧收容档案栏 */
/* 左侧循环 bulletin 栏：内容无限循环，滚轮驱动 */
/* 上下两条隐形边界，内容越过直接裁掉，不做渐隐 */
#bulletins {
  z-index: 2;   /* 页面内容：在背景层（灰底、背景刷，z 1）之上 */
  position: fixed; left: 0; top: calc(var(--left-clip, 5vh) * var(--zf, 1)); bottom: calc(var(--left-clip, 5vh) * var(--zf, 1));   /* 左栏自己的高度（P.leftHeight，默认 90%）；原来和导航共用 --clip-top / --clip-bottom */
  zoom: var(--unzoom, 1);   /* 抵消浏览器缩放（Ctrl + / −），左栏保持原来的物理大小；vh / vw 会被一起缩小，所以乘回 --zf（js/zoom.js） */
  width: calc(var(--side-w) * var(--left-base) * var(--left-kw, 1)); padding: 0 calc(var(--side-pad) * var(--left-kw, 1));   /* 宽度单独按屏宽缩（--left-kw，2026-10-27），字号跟 --left-scale */
  overflow: hidden; color: var(--ink);
}
#bulletins { display: flex; flex-direction: column; }
/* 左栏自己的字号倍率（2026-10-27 用户：0.75 倍时条目和文件比例太怪 → 左栏的字单独再小些；提示框 #case-tip 还是 :root 的 --left-kf）。
   --left-kc 由 items.js fitLeft 写（P.leftColFontMin）；小标签字（Interstate 大写）不小于 --left-label-min */
#bulletins { --left-kf: var(--left-kc, 1); --left-scale: calc(var(--left-base) * var(--left-kf)); }
#bulletins .track { will-change: transform; }
/* 下方循环列表：剩下的高度，越界直接裁掉 */
#bulletins .list { flex: 1 1 auto; min-height: 0; overflow: hidden; border-top: 1.5px solid var(--ink); }
/* 格子的白底比文字左右各宽出 --case-pad-x：列表本身也往两边扩出同样宽，否则白底被列表的 overflow 裁掉、贴着字和照片（2026-10-18） */
#bulletins .list { margin: 0 calc(-1 * var(--case-pad-x, 20px)); padding: 0 var(--case-pad-x, 20px); }
#bulletins .list .set > .bulletin:first-child { border-top: 0; }
#bulletins .list .set + .set > .bulletin:first-child { border-top: 1.5px solid var(--ink); }
/* 上方综述（data/overviews.json，fbcfiles 原文）：引语 → 小标题 → 正文（[REDACTED] 画成涂黑条）→ 出处 */
#bulletins .overview { flex: 0 0 auto; padding: 4px 0 calc(22px * var(--left-scale)); }
#bulletins .overview .ov-label {
  font-family: var(--font-label); font-size: max(var(--left-label-min, 0px), calc(10.5px * var(--left-scale))); font-weight: 500;
  letter-spacing: .14em; text-transform: uppercase; display: flex; justify-content: space-between; margin-bottom: calc(14px * var(--left-scale));
}
#bulletins .overview .ov-quote {
  font-family: var(--font-display); font-weight: 700; font-size: calc(clamp(20px, calc(1.7vw * var(--zf, 1)), 28px) * var(--left-scale));
  line-height: 1.02; letter-spacing: -0.015em; margin: 0 0 calc(8px * var(--left-scale));
}
#bulletins .overview .ov-cite {
  font-family: var(--font-label); font-size: max(var(--left-label-min, 0px), calc(10px * var(--left-scale))); font-weight: 500;
  letter-spacing: .12em; text-transform: uppercase; opacity: .6; margin-bottom: calc(18px * var(--left-scale));
}
#bulletins .overview .ov-kicker {
  font-family: var(--font-label); font-size: max(var(--left-label-min, 0px), calc(10.5px * var(--left-scale))); font-weight: 500;
  letter-spacing: .12em; text-transform: uppercase; line-height: 1.5; margin-bottom: calc(10px * var(--left-scale));
}
#bulletins .overview p {
  font-family: var(--font-body); font-size: calc(var(--ov-size, 15px) * var(--left-scale)); line-height: 1.42; margin: 0 0 .6em;
}
#bulletins .overview .ov-src {
  font-family: var(--font-label); font-size: max(var(--left-label-min, 0px), calc(10px * var(--left-scale))); font-weight: 500;
  letter-spacing: .12em; text-transform: uppercase; color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--ink);
}
/* 白底黑框文本框（2026-10-17）：框住正文那一篇（叠放时每页一个框） */
#bulletins .overview.boxed .ov-doc {
  background: #fff; border: var(--ov-border, 1.5px) solid var(--ink);
  padding: calc(var(--ov-pad, 26px) * var(--left-scale));
}
/* 按一张档案排版：署名表 → 居中粗体小标题 → 下划线 SUMMARY: → 正文 → Refer to file → fbcfiles 链接 */
#bulletins .overview .ov-doc.file p { font-size: calc(var(--ov-doc-size, 15px) * var(--left-scale)); line-height: 1.38; margin: 0 0 .75em; }
#bulletins .overview .ov-doc.file .ov-head {
  display: grid; grid-template-columns: auto 1fr; column-gap: 1.2em; row-gap: .25em;
  font-family: var(--font-label); font-size: max(var(--left-label-min, 0px), calc(10px * var(--left-scale))); font-weight: 500;
  letter-spacing: .1em; text-transform: uppercase; line-height: 1.35;
  padding-bottom: calc(12px * var(--left-scale)); margin-bottom: calc(16px * var(--left-scale)); border-bottom: 1px solid var(--ink);
}
#bulletins .overview .ov-doc.file .ov-head .k { opacity: .55; }
#bulletins .overview .ov-doc.file .ov-kicker {
  font-family: var(--font-body); font-weight: 700; font-size: calc(var(--ov-doc-size, 15px) * 1.02 * var(--left-scale));
  letter-spacing: 0; text-align: center; line-height: 1.3; margin: 0 0 calc(8px * var(--left-scale));
}
#bulletins .overview .ov-doc.file .ov-lead {
  font-family: var(--font-body); font-size: calc(var(--ov-doc-size, 15px) * var(--left-scale));
  text-decoration: underline; text-underline-offset: .15em; margin: calc(6px * var(--left-scale)) 0 .75em;
}
#bulletins .overview .ov-doc.file .ov-refer { margin-bottom: calc(14px * var(--left-scale)); }
/* 没有标签行时，翻页计数放在框右上角 */
#bulletins .overview .ov-stack > .ov-turn {
  position: absolute; top: calc(8px * var(--left-scale)); right: calc(10px * var(--left-scale)); z-index: 3;
  font-family: var(--font-label); font-size: max(var(--left-label-min, 0px), calc(10px * var(--left-scale))); font-weight: 500; letter-spacing: .14em;
}
/* 几篇叠成一摞（同一个 grid 格子，高度 = 最高那页），点一下翻到下一页；下面露出页边线 */
#bulletins .overview .ov-stack { display: grid; position: relative; perspective: var(--ov-persp, 900px); cursor: pointer; }
#bulletins .overview .ov-page { grid-area: 1 / 1; backface-visibility: hidden; will-change: transform, opacity; }
#bulletins .overview .ov-edge { position: absolute; height: 0; border-top: 1px solid var(--ink); opacity: .55; pointer-events: none; }
#bulletins .overview .ov-turn {
  font: inherit; letter-spacing: inherit; text-transform: inherit; color: inherit;
  background: none; border: 0; padding: 0; cursor: pointer;
}
#bulletins .overview .ov-turn:hover { text-decoration: underline; }
#bulletins .overview .redacted, #case-tip .redacted {
  display: inline-block; height: .95em; vertical-align: -0.14em; background: var(--ink);
}
/* 正文提示框：指到哪一格，就贴在那一格右边出现（白底，和格子的白底连成一块） */
#case-tip {
  position: fixed; left: 0; top: 0; z-index: 3; display: none;
  width: calc(var(--tip-w, 360px) * var(--left-scale)); padding: calc(26px * var(--left-scale)) calc(24px * var(--left-scale));
  background: #fff; color: var(--ink); pointer-events: none;
  font-family: var(--font-body);
  zoom: var(--unzoom, 1);   /* 和左栏一样抵消浏览器缩放；位置由 items.js 换算成本地坐标（屏幕坐标 × z） */
}
#case-tip.show { display: block; }
#case-tip p { font-size: calc(15.5px * var(--left-scale)); line-height: 1.45; margin: 0 0 .7em; }
#case-tip p:last-child { margin-bottom: 0; }
#case-tip .tip-label {
  font-family: var(--font-label); font-size: calc(10px * var(--left-scale)); font-weight: 500;
  letter-spacing: .14em; text-transform: uppercase; opacity: .55; margin-bottom: calc(12px * var(--left-scale));
}
body:not(.page-items) #case-tip { display: none; }
/* 档案栏只属于 Altered Items 页（用 visibility 而不是 display，保留排版尺寸） */
body:not(.page-items):not(.pre-items) #bulletins { visibility: hidden; }   /* pre-items：擦除中，档案栏先开始渐显 */
/* 擦除中的菱形：背景层（z 1，DOM 里排在 #brush 后面，画在刷子上面）；到达后交给 3D 背景着色器画（在椅子后面） */
#items-diamond { position: fixed; inset: 0; width: 100%; height: 100%; z-index: 1; pointer-events: none; display: none; }
body.pre-items:not(.page-items) #items-diamond { display: block; }
/* 每条 bulletin 是一个独立的块；左右各留 20px 内边距并用负外边距抵消，文字位置不变，悬停白底比文字略宽 */
.bulletin {
  padding: calc(34px * var(--left-kf, 1)) var(--case-pad-x, 20px) calc(30px * var(--left-kf, 1)); margin: 0 calc(-1 * var(--case-pad-x, 20px));   /* 左右内边距 = 白底比文字宽出多少（P.casePadX） */
  border-top: 1.5px solid var(--ink);
  transition: background-color .15s, border-color .15s;
}
/* 悬停时白底，比红底更易读；同时隐藏白底上下的分割线
   （下分割线是下一条的上边框；一组的最后一条和下一组的第一条不在同一个父元素里，单独处理） */
.bulletin:hover, .bulletin.hot { background: #fff; border-top-color: transparent; }
.bulletin:hover + .bulletin, .bulletin.hot + .bulletin,
.set:has(> .bulletin:last-child:hover) + .set > .bulletin:first-child,
.set:has(> .bulletin.hot:last-child) + .set > .bulletin:first-child { border-top-color: transparent; }
.bulletin .meta {
  display: flex; justify-content: space-between; gap: 16px;
  font-family: var(--font-label); font-size: max(var(--left-label-min, 0px), calc(11px * var(--left-scale))); font-weight: 500;
  letter-spacing: .14em; text-transform: uppercase; margin-bottom: 14px;
}
.bulletin h2 {
  font-family: var(--font-display); font-weight: 700;
  font-size: calc(clamp(26px, calc(2.6vw * var(--zf, 1)), 42px) * var(--left-scale)); line-height: .98; letter-spacing: -0.015em;
  margin: 0 0 14px;
}
.bulletin p {
  font-family: var(--font-body); font-size: calc(17px * var(--left-scale)); line-height: 1.45;
  margin: 0; max-width: 32ch;
}
/* 收容档案：编号 / 取得日期 → 名称 + 物品照片 → 收容地点 → 描述 → 完整档案链接 */
.bulletin.case { display: grid; grid-template-columns: 1fr calc(88px * var(--left-scale)); column-gap: calc(18px * var(--left-kf, 1)); }
.bulletin.case .meta { grid-column: 1 / -1; }
.bulletin.case h2 { grid-column: 1; align-self: end; font-size: calc(clamp(22px, calc(2.1vw * var(--zf, 1)), 34px) * var(--left-scale)); margin: 0 0 10px; }
.bulletin.case .photo {
  grid-column: 2; grid-row: 2 / span 2; align-self: start;
  width: calc(88px * var(--left-scale)); aspect-ratio: 3 / 4; object-fit: cover; display: block;
  filter: grayscale(1) contrast(1.15); mix-blend-mode: multiply; /* 照片的黑底融进红色 */
}
.bulletin.case .loc {
  grid-column: 1; align-self: start;
  font-family: var(--font-label); font-size: max(var(--left-label-min, 0px), calc(10.5px * var(--left-scale))); font-weight: 500;
  letter-spacing: .1em; text-transform: uppercase; line-height: 1.4;
}
.bulletin.case .loc .label { opacity: .55; display: block; }
.bulletin.case .desc { grid-column: 1 / -1; margin-top: 16px; }
.bulletin.case .desc p { font-size: calc(16px * var(--left-scale)); max-width: none; margin-bottom: .7em; }
.bulletin.case .redacted {
  display: inline-block; height: .95em; vertical-align: -0.14em;
  background: var(--ink); /* 涂黑条 */
}
.bulletin.case .more {
  grid-column: 1 / -1; justify-self: start; margin-top: 4px;
  font-family: var(--font-label); font-size: max(var(--left-label-min, 0px), calc(10.5px * var(--left-scale))); font-weight: 500;
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--ink);
}

/* 格子文字右对齐贴着照片，照片占整格高度（2026-10-17，#bulletins.case-right / .photo-bleed） */
#bulletins .bulletin.case { grid-template-columns: 1fr calc(var(--case-photo-w, 88px) * var(--left-scale)); }
#bulletins .bulletin.case .photo { width: 100%; }
#bulletins:is(.case-right, .case-split) .bulletin.case { position: relative; }
#bulletins:is(.case-right, .case-split) .bulletin.case .meta { grid-column: 1; }
#bulletins:is(.case-right, .case-split) .bulletin.case .more { grid-column: 1; }
#bulletins:is(.case-right, .case-split) .bulletin.case.no-photo .meta { grid-column: 1 / -1; }
#bulletins .bulletin.case .meta { flex-wrap: wrap; row-gap: .4em; }
#bulletins .bulletin.case .meta > span { white-space: nowrap; }   /* 编号、日期各自不折行（「04/21/19 (seen, not acquired)」）；放不下时整个日期换到下一行，不拆开 */
#bulletins.case-right .bulletin.case .meta { justify-content: flex-end; }
#bulletins.case-right .bulletin.case h2 { text-align: right; }
#bulletins.case-right .bulletin.case .loc { text-align: right; }
#bulletins.case-right .bulletin.case .more { justify-self: end; }
/* 照片绝对定位（不参与撑高格子：格子高度只由文字决定），和文字块等高（上下留着格子的内边距）；第 2 列留空当占位 */
#bulletins:is(.case-right, .case-split):not(.photo-natural) .bulletin.case .photo {
  grid-row: auto; grid-column: auto;   /* 绝对定位的 grid 子元素如果指定了行列，会以那几格为参照（标题换行时照片就跟着往下挪）；auto = 以整格的内边距框为参照 */
  position: absolute; right: var(--case-pad-x, 20px); top: calc(34px * var(--left-kf, 1)); height: calc(100% - 64px * var(--left-kf, 1));   /* 图片是替换元素：只给 top + bottom 不会拉伸，要写明高度（格子上下内边距 34 + 30） */
  width: calc(var(--case-photo-w, 88px) * var(--left-scale)); aspect-ratio: auto;
}
#bulletins:is(.case-right, .case-split):not(.photo-natural).photo-bleed .bulletin.case .photo { top: 0; height: 100%; }   /* 盖住格子上下内边距（.bulletin 的 34 / 30px），顶到分割线 */
/* 照片按原比例（2026-10-17 用户：不能裁切、不能拉伸）：宽度固定、高度按原图比例，照片决定格子高度；
   文字按照片排：编号行贴照片上边、标题接在下面、收容地点贴照片下边（文字比照片高时照片贴上边，不拉伸） */
#bulletins.photo-natural .bulletin.case { grid-template-rows: auto auto 1fr; }
#bulletins.photo-natural .bulletin.case h2 { align-self: start; }
#bulletins.photo-natural .bulletin.case .loc { grid-row: 3; align-self: end; }
#bulletins.photo-natural .bulletin.case .photo {
  grid-column: 2; grid-row: 1 / 4; align-self: start;
  width: calc(var(--case-photo-w, 88px) * var(--left-scale)); height: auto; aspect-ratio: auto 3 / 4; object-fit: fill;   /* auto 3 / 4：图还没到时先按 3:4 占位（2026-10-26 改成进本页才加载），到了按原比例 */
}
/* 列表一遍到底（2026-10-17）：综述档案是列表第一项，列表顶上不画分割线 */
#bulletins.list-linear .list { border-top: 0; }
