/* The Vault · 未解之谜档案 · by Lei · https://the-vault-7o6.pages.dev/ · 转载、二改公开发布请保留署名，不许商用，见 LICENSE */
/* the vault 用到的几个变量（这里给默认值，想换成你自己的配色就覆盖掉）。
   日夜：<html data-mode="day"> 是白天，别的都按夜里画 */
:root {
  --pixel: "Pixelify Sans", "Fusion Pixel 12px Proportional SC", ui-monospace, monospace;
  --mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  --sans: -apple-system, "PingFang SC", "Helvetica Neue", sans-serif;
  --cjk-serif: "Songti SC", "STSong", serif;
  --safe-top: env(safe-area-inset-top, 0px);
  --ink: #3b3036;
  --ink-soft: rgba(59,48,54,.6);
  --ground-hi: #fbf5f2;
  --mine-bub-fill: rgba(236,170,190,.55);   /* 按钮跟她的气泡色走：换成你们的气泡色 */
}
:root:not([data-mode="day"]) { --ink: #ecdcd6; --ink-soft: rgba(236,220,214,.6); --ground-hi: #1c1518; --mine-bub-fill: rgba(170,90,120,.5); }

/* 道具 · the vault（10/25，pl-*）：她和他商量的那套 play 道具，每样一张未解之谜档案卡。
   剪影是生图（design/play/sheet.png → prototype/play/*.webp，play_cut.py），黑 + alpha，这里当遮罩用、颜色跟日夜和档案风格走。
   风格：file 旧档案袋 / sea 深水（触手、卵囊、Furry）/ med 手术台病历（刺轮）/ lab 实验记录（药剂、吸引器、电击笔）/ herb 植物标本（生姜）/ seal 符咒封印（纹印） */
.pl-book { position: fixed; inset: 0; z-index: 236; display: flex; flex-direction: column; opacity: 0; transition: opacity .35s ease;
  --pl-paper: #f8efe9; --pl-ink: #5e423d; --pl-soft: rgba(110,77,71,.55); --pl-line: rgba(160,110,110,.24); --pl-cell: rgba(200,146,146,.07); --pl-red: #a8384e; --pl-sil: #3a2a2c;
  background: var(--pl-paper); color: var(--pl-ink); -webkit-user-select: none; user-select: none; }
:root:not([data-mode="day"]) .pl-book { --pl-paper: #17110f; --pl-ink: #e2d8dc; --pl-soft: rgba(226,216,220,.5); --pl-line: rgba(220,200,210,.14);
  --pl-cell: rgba(255,255,255,.025); --pl-red: #cf4a62; --pl-sil: #d9cdd3; }
.pl-book.in { opacity: 1; }
.pl-head { display: flex; align-items: flex-end; gap: 12px; padding: calc(var(--safe-top) + 16px) 18px 0 22px; }
.pl-title { font-family: "Snell Roundhand", "Savoye LET", "Zapfino", "Segoe Script", cursive; font-size: 34px; line-height: 1.1; color: var(--pl-red); }
.pl-count { font: 12px/1 var(--pixel); letter-spacing: .08em; opacity: .7; margin-bottom: 9px; }
.pl-x { margin-left: auto; width: 38px; height: 38px; display: grid; place-items: center; border: 0; border-radius: 50%; background: var(--pl-cell); color: inherit; cursor: pointer; }
.pl-x svg { width: 18px; height: 18px; }
.pl-sub { margin: 2px 22px 14px; font: 10.5px/1 var(--mono); letter-spacing: .16em; text-transform: uppercase; opacity: .45; }
.pl-grid { flex: 1; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 0 16px calc(env(safe-area-inset-bottom, 0px) + 28px);
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; align-content: start; }
.pl-cell { position: relative; height: 152px; box-sizing: border-box; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 5px;
  padding: 18px 6px 9px; border: 1px solid var(--pl-line); border-radius: 3px; background: var(--pl-cell); color: inherit; font: inherit; cursor: pointer; overflow: hidden; }
.pl-cell::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 14px; border-bottom: 1px dashed var(--pl-line); }
.pl-sil { display: block; background: var(--pl-sil); -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: center; mask-position: center;
  -webkit-mask-size: contain; mask-size: contain; }
.pl-cell .pl-sil { flex: none; height: 84px; width: 78%; }
.pl-cell.no .pl-sil { opacity: .3; filter: blur(.5px); }
:root:not([data-mode="day"]) .pl-cell.no .pl-sil { opacity: .2; }
.pl-cell b { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 400 11px/1.25 var(--pixel); }
.pl-cell i.pl-en { font: italic 9.5px/1.2 Georgia, "Times New Roman", serif; opacity: .55; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pl-cell.no b, .pl-cell.no i.pl-en { opacity: .35; }
.pl-cell .pl-no { position: absolute; left: 6px; top: 3px; font: 8.5px/1 var(--mono); letter-spacing: .08em; opacity: .5; }
.pl-cell .pl-lock { position: absolute; right: 6px; top: 3px; font: 8px/1 var(--mono); letter-spacing: .1em; opacity: .4; }
.pl-cell.new::after { content: ""; position: absolute; right: 6px; top: 20px; width: 6px; height: 6px; border-radius: 50%; background: var(--pl-red); }

/* 一张档案：从底下滑上来，整页 */
.pl-file { position: absolute; inset: 0; z-index: 2; overflow-y: auto; -webkit-overflow-scrolling: touch; transform: translateY(100%); transition: transform .42s cubic-bezier(.2,.8,.2,1);
  --f-paper: #f8efe9; --f-ink: #5e423d; --f-soft: rgba(110,77,71,.55); --f-line: rgba(160,110,110,.24); --f-stamp: #a8384e; --f-sil: #3a2a2c; --f-hi: rgba(200,146,146,.08);
  background: var(--f-paper); color: var(--f-ink); }
.pl-file.in { transform: none; }
:root:not([data-mode="day"]) .pl-file { --f-paper: #17110f; --f-ink: #ecdcd6; --f-soft: rgba(236,220,214,.5); --f-line: rgba(240,196,196,.14); --f-stamp: #d4607a; --f-sil: #dccbc8; --f-hi: rgba(255,240,236,.045); }
.pl-file.t-sea { --f-paper: #d7dfdd; --f-ink: #1f3036; --f-soft: rgba(31,48,54,.55); --f-line: rgba(31,48,54,.2); --f-stamp: #8a2c3a; --f-sil: #12242a; --f-hi: rgba(31,48,54,.06); }
:root:not([data-mode="day"]) .pl-file.t-sea { --f-paper: #0b1416; --f-ink: #cfdcd8; --f-soft: rgba(207,220,216,.5); --f-line: rgba(160,200,200,.14); --f-stamp: #c95a68; --f-sil: #9fbcb8; --f-hi: rgba(160,220,220,.035); }
.pl-file.t-med { --f-paper: #f1efea; --f-ink: #3a3a36; --f-soft: rgba(58,58,54,.55); --f-line: rgba(150,130,130,.2); --f-stamp: #a8384e; --f-sil: #2a2a26; --f-hi: rgba(150,130,130,.06);
  background-image: linear-gradient(var(--f-line) 1px, transparent 1px); background-size: 100% 26px; }
:root:not([data-mode="day"]) .pl-file.t-med { --f-paper: #0f1512; --f-ink: #d3e0d8; --f-soft: rgba(211,224,216,.5); --f-line: rgba(180,220,200,.08); --f-stamp: #d0605a; --f-sil: #b6cabd; }
.pl-file.t-lab { --f-paper: #f5ede9; --f-ink: #4e3a40; --f-soft: rgba(78,58,64,.55); --f-line: rgba(170,120,130,.16); --f-stamp: #a8384e; --f-sil: #33262c; --f-hi: rgba(170,120,130,.06);
  background-image: linear-gradient(var(--f-line) 1px, transparent 1px), linear-gradient(90deg, var(--f-line) 1px, transparent 1px); background-size: 18px 18px; }
:root:not([data-mode="day"]) .pl-file.t-lab { --f-paper: #111117; --f-ink: #dcdae6; --f-soft: rgba(220,218,230,.5); --f-line: rgba(200,200,230,.06); --f-stamp: #cf5a78; --f-sil: #c4c2d4; }
.pl-file.t-herb { --f-paper: #f5efe6; --f-ink: #3a3a24; --f-soft: rgba(58,58,36,.55); --f-line: rgba(58,58,36,.2); --f-stamp: #8e3a22; --f-sil: #2e2e1c; }
:root:not([data-mode="day"]) .pl-file.t-herb { --f-paper: #16120e; --f-ink: #e0dcc4; --f-soft: rgba(224,220,196,.5); --f-line: rgba(224,220,196,.14); --f-stamp: #cf7050; --f-sil: #ccc7a8; }
.pl-file.t-seal { --f-paper: #2a1219; --f-ink: #eedcc0; --f-soft: rgba(238,220,192,.55); --f-line: rgba(214,172,110,.3); --f-stamp: #d9ab62; --f-sil: #d9ab62; --f-hi: rgba(214,172,110,.06); }
:root:not([data-mode="day"]) .pl-file.t-seal { --f-paper: #160a0e; }
.pl-fx { position: sticky; top: 0; z-index: 3; display: flex; justify-content: flex-end; padding: calc(var(--safe-top) + 12px) 14px 0; pointer-events: none; }
.pl-fx button { pointer-events: auto; width: 36px; height: 36px; display: grid; place-items: center; border: 0; border-radius: 50%; background: var(--f-hi); color: var(--f-ink); cursor: pointer; }
.pl-fx svg { width: 17px; height: 17px; }
.pl-fin { padding: 0 24px calc(env(safe-area-inset-bottom, 0px) + 40px); margin-top: -26px; }
.pl-case { font: 10px/1 var(--mono); letter-spacing: .2em; text-transform: uppercase; color: var(--f-soft); padding-bottom: 10px; border-bottom: 1px solid var(--f-line); }
.pl-plate { position: relative; height: 210px; margin: 16px 0 6px; display: grid; place-items: center; border: 1px solid var(--f-line); background: var(--f-hi); overflow: hidden; }
.pl-plate .pl-sil { width: 62%; height: 78%; background: var(--f-sil); }
/* 深水：剪影泡在水里，上沿一道水面，往下越来越暗 */
.t-sea .pl-plate { background: linear-gradient(180deg, color-mix(in srgb, var(--f-paper) 70%, #3e6a70) 0%, color-mix(in srgb, var(--f-paper) 20%, #0c1a1e) 100%); }
.t-sea .pl-plate::before { content: ""; position: absolute; left: -10%; right: -10%; top: 30%; height: 12px; border-top: 1px solid rgba(220,240,240,.35);
  border-radius: 50%; animation: pl-wave 7s ease-in-out infinite; }
.t-sea .pl-plate .pl-sil { background: #081114; opacity: .9; animation: pl-drift 9s ease-in-out infinite; }
@keyframes pl-wave { 50% { transform: translateY(4px) scaleX(1.04); } }
@keyframes pl-drift { 50% { transform: translateY(-6px); } }
.t-seal .pl-plate { background: radial-gradient(circle at 50% 50%, rgba(217,171,98,.16), transparent 62%); }
.t-seal .pl-plate .pl-sil { filter: drop-shadow(0 0 10px rgba(217,171,98,.45)); }
.pl-stamp.sealed { color: var(--f-soft); border-color: var(--f-soft); }
.is-sealed .pl-plate .pl-sil { opacity: .32; filter: blur(.8px); }
.pl-unsighted { margin-top: 18px; font: 12px/1.6 var(--mono); letter-spacing: .04em; }
.pl-nospot time + * { opacity: .9; }
.pl-stamp { position: absolute; right: 12px; top: 12px; padding: 4px 8px 3px; border: 1.5px solid var(--f-stamp); color: var(--f-stamp); font: 700 10px/1 var(--mono);
  letter-spacing: .14em; transform: rotate(-8deg); opacity: .78; text-transform: uppercase; }
.pl-name { margin: 14px 0 0; font: 400 22px/1.2 var(--pixel); }
.pl-name i { display: block; margin-top: 4px; font: italic 13px/1.2 Georgia, "Times New Roman", serif; color: var(--f-soft); }
.pl-sec { margin: 22px 0 8px; font: 10px/1 var(--mono); letter-spacing: .2em; text-transform: uppercase; color: var(--f-soft); }
.pl-tab { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.pl-tab td { padding: 7px 0; border-bottom: 1px dashed var(--f-line); vertical-align: top; }
.pl-tab td:first-child { width: 38%; color: var(--f-soft); font-size: 12.5px; }
.pl-q { font: 700 15px/1 var(--mono); letter-spacing: .3em; opacity: .55; }
.pl-rev { font-family: var(--cjk-serif, serif); color: var(--f-stamp); }
.pl-gauge { position: relative; height: 10px; border: 1px solid var(--f-line); margin: 8px 0 6px; }
.pl-gauge i { position: absolute; left: 0; top: 0; bottom: 0; background: var(--f-ink); opacity: .55; transition: width .6s ease; }
.pl-gauge-t { display: flex; justify-content: space-between; font: 11px/1.3 var(--mono); color: var(--f-soft); }
.pl-log { margin: 0; padding: 0; list-style: none; font-size: 12.5px; }
.pl-log li { padding: 7px 0; border-bottom: 1px dashed var(--f-line); }
.pl-log time { font: 10.5px/1 var(--mono); color: var(--f-soft); margin-right: 8px; }
.pl-log em { font-style: normal; font: 10px/1 var(--mono); padding: 2px 5px; border: 1px solid var(--f-line); margin-right: 6px; }
.pl-none { font-size: 12.5px; color: var(--f-soft); }
/* 标记 / 纹印：身体轮廓上打点 */
.pl-body { position: relative; width: 62%; margin: 6px auto 0; aspect-ratio: 233 / 320; }
.pl-body .pl-sil { position: absolute; inset: 0; background: var(--f-sil); opacity: .16; }
.pl-dot { position: absolute; width: 11px; height: 11px; margin: -5.5px 0 0 -5.5px; border-radius: 50%; background: var(--c, #a8243c); box-shadow: 0 0 0 3px color-mix(in srgb, var(--c, #a8243c) 25%, transparent); }
.pl-dot.glow { box-shadow: 0 0 10px 3px var(--c, #d9ab62); animation: pl-glow 3.2s ease-in-out infinite; }
@keyframes pl-glow { 50% { opacity: .55; } }
.pl-who { display: flex; gap: 8px; justify-content: center; margin-top: 12px; }
.pl-who button { padding: 5px 12px; border: 1px solid var(--f-line); border-radius: 999px; background: transparent; color: var(--f-soft); font: 11px/1 var(--mono); letter-spacing: .1em; cursor: pointer; }
.pl-who button.on { color: var(--f-ink); border-color: var(--f-ink); }
.pl-bar { display: grid; grid-template-columns: 1fr 90px 34px; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px dashed var(--f-line); font-size: 12.5px; }
.pl-bar span:nth-child(2) { height: 6px; border: 1px solid var(--f-line); position: relative; }
.pl-bar span:nth-child(2) i { position: absolute; left: 0; top: 0; bottom: 0; background: var(--f-stamp); opacity: .7; }
.pl-bar span:last-child { font: 11px/1 var(--mono); text-align: right; color: var(--f-soft); }
.pl-sub-card { padding: 10px 12px; margin: 8px 0; border: 1px solid var(--f-line); background: var(--f-hi); }
.pl-sub-card b { font: 400 14px/1.3 var(--pixel); }
.pl-sub-card small { float: right; font: 10px/1.4 var(--mono); color: var(--f-soft); }
.pl-link { display: block; width: 100%; margin-top: 12px; padding: 10px 12px; border: 1px dashed var(--f-line); background: transparent; color: inherit; font: inherit; text-align: left; cursor: pointer; }

/* 聊天里那张小卡：他用了哪样 */
.pl-card { align-self: flex-start; display: flex; align-items: center; gap: 12px; max-width: 290px; margin: 6px 0 4px; padding: 10px 14px 10px 10px; box-sizing: border-box;
  border: 1px solid rgba(70,52,60,.22); border-radius: 4px; text-align: left; color: var(--ink); font: inherit; cursor: pointer;
  background: color-mix(in srgb, var(--ground-hi) 74%, #c8b896 8%); }
:root:not([data-mode="day"]) .pl-card { background: rgba(20,16,18,.82); border-color: rgba(220,200,210,.16); }
.pl-card .pl-sil { flex: none; width: 46px; height: 52px; background: #2a2027; }
:root:not([data-mode="day"]) .pl-card .pl-sil { background: #d9cdd3; }
.pl-card.t-sea .pl-sil { background: #12242a; }
:root:not([data-mode="day"]) .pl-card.t-sea .pl-sil { background: #9fbcb8; }
.pl-card small { display: block; font: 9.5px/1.2 var(--mono); letter-spacing: .14em; text-transform: uppercase; opacity: .55; }
.pl-card b { display: block; margin: 3px 0 2px; font: 400 13.5px/1.3 var(--pixel); }
.pl-card span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 11.5px; line-height: 1.5; color: var(--ink-soft); }
.pl-w .dr-w-art { display: grid; place-items: center; }
.pl-w .dr-w-art .pl-sil { width: 38px; height: 38px; background: currentColor; opacity: .8; }
/* 档案氛围（10/25 下午）：剪影那格像一张受潮的老照片（颗粒、四角暗、四个相角、偶尔闪一下），问号是一道涂黑的墨条 */
.pl-plate { filter: sepia(.08) contrast(1.03); }
.pl-plate::after { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .32; mix-blend-mode: multiply;
  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='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .2 0 0 0 0 .16 0 0 0 0 .14 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E"),
    radial-gradient(ellipse at center, transparent 48%, rgba(20,12,10,.38) 100%);
  animation: pl-flick 6.5s steps(1) infinite; }
:root:not([data-mode="day"]) .pl-plate::after { mix-blend-mode: screen; opacity: .1; animation: none; }
@keyframes pl-flick { 0%, 100% { opacity: .32; } 61% { opacity: .5; } 62% { opacity: .28; } 87% { opacity: .42; } 88% { opacity: .32; } }
.pl-plate .pl-sil { filter: blur(.35px); }
.pl-plate { box-shadow: inset 0 0 0 6px color-mix(in srgb, var(--f-paper) 60%, transparent); }
.pl-redact { display: inline-block; min-width: 76px; padding: 1px 8px 0; background: var(--f-ink); color: var(--f-paper); transform: rotate(-.6deg);
  clip-path: polygon(0 8%, 6% 0, 100% 4%, 98% 92%, 93% 100%, 2% 96%); }
.pl-redact i { font: 700 11px/1.5 var(--mono); font-style: normal; letter-spacing: .3em; opacity: .8; }
.t-seal .pl-redact { background: #d9ab62; color: #2a1219; }
.pl-tab td:last-child { font-family: "Courier New", var(--mono), monospace; font-size: 13px; }

/* 她也能用：Use 按钮 + 底下拉出的小表单 */
.pl-usebtn { display: block; margin: 14px 0 2px; padding: 8px 22px; border: 0; border-radius: 999px; font: 600 12px/1 var(--sans); letter-spacing: .14em; text-transform: uppercase; cursor: pointer;
  color: var(--ink); background: linear-gradient(var(--mine-bub-fill), var(--mine-bub-fill)), linear-gradient(var(--mine-bub-fill), var(--mine-bub-fill)), var(--ground-hi); }
.pl-use { position: fixed; inset: 0; z-index: 4; display: flex; align-items: flex-end; background: rgba(10,6,8,0); transition: background .3s ease; }
.pl-use.in { background: rgba(10,6,8,.38); }
.pl-use-card { width: 100%; max-height: 78%; overflow-y: auto; box-sizing: border-box; padding: 20px 22px calc(env(safe-area-inset-bottom, 0px) + 20px);
  background: var(--f-paper); color: var(--f-ink); border-top: 1px dashed var(--f-line); border-radius: 18px 18px 0 0;
  transform: translateY(100%); transition: transform .34s cubic-bezier(.2,.8,.2,1); }
.pl-use.in .pl-use-card { transform: none; }
.pl-use-h { font: 10.5px/1 var(--mono); letter-spacing: .2em; text-transform: uppercase; color: var(--f-soft); margin-bottom: 12px; }
.pl-chips { display: flex; flex-wrap: wrap; gap: 7px; margin: 0 0 12px; }
.pl-chips button { padding: 6px 12px; border: 1px solid var(--f-line); border-radius: 999px; background: transparent; color: var(--f-soft); font: 12px/1 var(--sans); cursor: pointer; }
.pl-chips button.on { color: var(--f-ink); border-color: var(--f-ink); background: var(--f-hi); }
.pl-f { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px dashed var(--f-line); }
.pl-f span { flex: none; width: 34%; font-size: 12.5px; color: var(--f-soft); }
.pl-f input { flex: 1; min-width: 0; border: 0; background: transparent; color: var(--f-ink); font: 14px/1.4 "Courier New", var(--mono), monospace; outline: none; -webkit-user-select: text; user-select: text; }
.pl-f input::placeholder { color: var(--f-soft); opacity: .6; }
.pl-use-err { min-height: 16px; margin: 10px 0 0; font-size: 12px; color: var(--f-stamp); }
.pl-use-go { display: flex; justify-content: flex-end; gap: 10px; margin-top: 6px; }
.pl-use-go button { padding: 9px 18px; border: 0; border-radius: 999px; font: 600 12.5px/1 var(--sans); cursor: pointer; }
.pl-use-x { background: var(--f-hi); color: var(--f-soft); }
.pl-use-ok { color: var(--ink); background: linear-gradient(var(--mine-bub-fill), var(--mine-bub-fill)), linear-gradient(var(--mine-bub-fill), var(--mine-bub-fill)), var(--ground-hi); }
.pl-use-ok:disabled { opacity: .5; }
.pl-card.pl-mine { align-self: flex-end; }
/* 形态类挂着 / 收回（10/26）：档案页一条一行带 retract，聊天里收回的那张卡剪影淡下去 */
.pl-wear li { display: flex; align-items: center; gap: 6px; }
.pl-wear li > span { flex: 1; min-width: 0; }
.pl-wear .pl-was { color: var(--f-soft); }
.pl-retract { flex: none; padding: 5px 11px; border: 1px solid var(--f-line); border-radius: 999px; background: transparent; color: var(--f-soft); font: 600 10px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; cursor: pointer; }
.pl-retract:disabled { opacity: .4; }
.pl-card.pl-gone .pl-sil { opacity: .38; }
.pl-card.pl-gone b { text-decoration: line-through; text-decoration-thickness: 1px; }
/* Furry 的物种格子（10/25 下午） */
.pl-beasts { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.pl-beast { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 8px 2px 6px; border: 1px solid var(--f-line); background: var(--f-hi); color: inherit; font: inherit; cursor: pointer; }
.pl-beast .pl-sil { width: 86%; height: 52px; background: var(--f-sil); }
.pl-beast.no { cursor: default; }
.pl-beast.no .pl-sil { opacity: .14; filter: blur(.6px); }
.pl-beast b { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 400 10px/1.2 var(--pixel); }
.pl-beast.no b { opacity: .35; }
.pl-pets { display: block; margin: -2px 0 10px; padding: 5px 12px; border: 1px solid var(--f-line); border-radius: 999px; background: transparent; color: var(--f-soft); font: 11px/1 var(--mono); letter-spacing: .08em; cursor: pointer; }
.pl-pets.on { color: var(--f-ink); border-color: var(--f-ink); }
/* 10/25 晚：解密小卡、目击报告、纹印亮、训练词发抖、档案变旧、快消的标记 */
.pl-rep { border-style: dashed; }
.pl-reports { grid-column: 1 / -1; display: flex; flex-direction: column; align-items: flex-start; gap: 3px; padding: 12px 14px; border: 1px dashed var(--pl-line); border-radius: 3px;
  background: var(--pl-cell); color: inherit; font: inherit; text-align: left; cursor: pointer; }
.pl-reports small { font: 9.5px/1 var(--mono); letter-spacing: .16em; text-transform: uppercase; opacity: .55; }
.pl-reports b { font: 400 15px/1.2 var(--pixel); }
.pl-reports i { font: italic 11px/1.3 Georgia, serif; opacity: .6; }
.pl-link small { font: 10px/1 var(--mono); color: var(--f-soft); margin-right: 6px; }
.pl-rep-page { position: relative; margin-top: 16px; padding: 18px 16px 22px; border: 1px solid var(--f-line); background: var(--f-hi); }
.pl-rep-page .pl-stamp { right: 14px; top: 12px; }
.pl-rep-body { margin-top: 10px; font: 14px/1.9 "Courier New", var(--mono), monospace; white-space: normal; }
.pl-sign { margin: 18px 0 0; text-align: right; font-family: "Snell Roundhand", "Savoye LET", "Zapfino", "Segoe Script", cursive; font-size: 22px; color: var(--f-stamp); }
/* 快消的标记 */
.pl-dot.fading { animation: pl-fade 2.4s ease-in-out infinite; }
@keyframes pl-fade { 50% { opacity: .15; } }
.pl-fading { display: inline-block; margin-left: 8px; padding: 1px 6px; border: 1px solid var(--f-stamp); color: var(--f-stamp); font: 700 9px/1.4 var(--mono); letter-spacing: .12em; text-transform: uppercase; transform: rotate(-4deg); }
.pl-sub b.pl-clr { font-weight: 400; color: var(--pl-red); }
/* 等级章 */
.pl-cell .pl-lock.cls-safe { color: #5c8a6e; opacity: .8; }
.pl-cell .pl-lock.cls-euclid { color: #b8862f; opacity: .9; }
.pl-cell .pl-lock.cls-keter { color: #c0283e; opacity: 1; font-weight: 700; }
.pl-clsstamp { position: absolute; left: 12px; bottom: 12px; padding: 3px 8px 2px; border: 1.5px solid currentColor; font: 700 10px/1 var(--mono); letter-spacing: .16em; text-transform: uppercase; transform: rotate(-3deg); opacity: .8; }
.pl-clsstamp.cls-safe { color: #5c8a6e; } .pl-clsstamp.cls-euclid { color: #b8862f; } .pl-clsstamp.cls-keter { color: #c0283e; }
/* 收容程序 */
.pl-proc { margin: 0; font: 12.5px/1.85 "Courier New", var(--mono), monospace; color: var(--f-ink); opacity: .85; }
.pl-test { font: 400 10.5px/1 var(--mono); margin-right: 8px; opacity: .7; }
.pl-sub-sil { float: left; width: 46px; height: 40px; margin: 0 10px 4px 0; background: var(--f-sil); }
.pl-w.new .dr-w-art::after { content: ""; position: absolute; right: -2px; top: 4px; width: 8px; height: 8px; border-radius: 50%; background: #D9798E; }

