<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://shanghaidc1.gaoice.run/index.php?action=history&amp;feed=atom&amp;title=%E5%BE%AE%E4%BB%B6%3APD%E5%8D%A1%E7%89%8C</id>
	<title>微件:PD卡牌 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://shanghaidc1.gaoice.run/index.php?action=history&amp;feed=atom&amp;title=%E5%BE%AE%E4%BB%B6%3APD%E5%8D%A1%E7%89%8C"/>
	<link rel="alternate" type="text/html" href="https://shanghaidc1.gaoice.run/index.php?title=%E5%BE%AE%E4%BB%B6:PD%E5%8D%A1%E7%89%8C&amp;action=history"/>
	<updated>2026-10-31T20:57:56Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://shanghaidc1.gaoice.run/index.php?title=%E5%BE%AE%E4%BB%B6:PD%E5%8D%A1%E7%89%8C&amp;diff=58323&amp;oldid=prev</id>
		<title>2026年10月15日 (四) 16:06 TheNewMillium</title>
		<link rel="alternate" type="text/html" href="https://shanghaidc1.gaoice.run/index.php?title=%E5%BE%AE%E4%BB%B6:PD%E5%8D%A1%E7%89%8C&amp;diff=58323&amp;oldid=prev"/>
		<updated>2026-10-15T16:06:08Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年10月16日 (五) 00:06的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l165&quot;&gt;第165行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第165行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    var heading = skill.querySelector(&amp;#039;.pd-skill-title&amp;#039;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    var heading = skill.querySelector(&amp;#039;.pd-skill-title&amp;#039;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    var type = heading.querySelector(&amp;#039;.pd-skill-type&amp;#039;).textContent.trim().replace(/^【|】$/g, &amp;#039;&amp;#039;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    var type = heading.querySelector(&amp;#039;.pd-skill-type&amp;#039;).textContent.trim().replace(/^【|】$/g, &amp;#039;&amp;#039;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    var iconType = /主动$/.test(type) ? &#039;主动&#039; : type;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    var iconType = /主动$/.test(type) ? &#039;主动&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039; : type === &#039;退场&#039; ? &#039;离场&lt;/ins&gt;&#039; : type;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    if ([&amp;#039;登场&amp;#039;,&amp;#039;被动&amp;#039;,&amp;#039;主动&amp;#039;,&amp;#039;离场&amp;#039;,&amp;#039;特殊&amp;#039;].indexOf(iconType) &amp;lt; 0) return;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    if ([&amp;#039;登场&amp;#039;,&amp;#039;被动&amp;#039;,&amp;#039;主动&amp;#039;,&amp;#039;离场&amp;#039;,&amp;#039;特殊&amp;#039;].indexOf(iconType) &amp;lt; 0) return;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    var label = type + &amp;#039;：&amp;#039; + heading.querySelector(&amp;#039;.pd-skill-name&amp;#039;).textContent.trim();&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    var label = type + &amp;#039;：&amp;#039; + heading.querySelector(&amp;#039;.pd-skill-name&amp;#039;).textContent.trim();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l216&quot;&gt;第216行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第216行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   p.directionButton.disabled = field === &amp;#039;original&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   p.directionButton.disabled = field === &amp;#039;original&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   p.directionButton.textContent = p.direction === 1 ? &amp;#039;升序 ↑&amp;#039; : &amp;#039;降序 ↓&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   p.directionButton.textContent = p.direction === 1 ? &amp;#039;升序 ↑&amp;#039; : &amp;#039;降序 ↓&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; }&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; function assignAnchor(root, card, doc) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  if (card.id) return card.id;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  var original = card.querySelector(&#039;.pd-card-ui-summary&#039;);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  var packId = root.dataset.anchorPrefix || root.dataset.pack || root.dataset.packName || &#039;cards&#039;;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  var seed = card.dataset.number.trim() || original.querySelector(&#039;.pd-card-ui-name-text&#039;).textContent.trim();&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  var base = &#039;pd-card-&#039; + (packId + &#039;-&#039; + seed).trim().replace(/\s+/g, &#039;_&#039;).replace(/[\u0000-\u001f\u007f]/g, &#039;&#039;), candidate = base, serial = 2;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  while (doc.getElementById(candidate)) { candidate = base + &#039;-&#039; + serial; serial++; }&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  card.id = candidate; return candidate;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; }&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; function resolveAnchors(doc) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  var ids = [];&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  doc.querySelectorAll(&#039;.pd-card-ui-pack-root&#039;).forEach(function(root) {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;   Array.from(root.querySelector(&#039;.pd-card-ui-list&#039;).children).filter(function(c) { return c.classList.contains(&#039;pd-card-ui-card&#039;); }).forEach(function(card) { ids.push(assignAnchor(root, card, doc)); });&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  });&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  return ids;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  function initPack(root) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  function initPack(root) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l224&quot;&gt;第224行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第240行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    Array.from(p.list.children).filter(function (c) { return c.classList.contains(&amp;#039;pd-card-ui-card&amp;#039;); }).forEach(function (card, i) {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;    Array.from(p.list.children).filter(function (c) { return c.classList.contains(&amp;#039;pd-card-ui-card&amp;#039;); }).forEach(function (card, i) {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     var original = card.querySelector(&amp;#039;.pd-card-ui-summary&amp;#039;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     var original = card.querySelector(&amp;#039;.pd-card-ui-summary&amp;#039;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if &lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;!card.id) {&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;assignAnchor&lt;/ins&gt;(root&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;card, document);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     var packId = &lt;/del&gt;root&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.dataset.pack || root.dataset.packName || &#039;cards&#039;;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     var seed = card.dataset.number.trim() || original.querySelector(&#039;.pd-card-ui-name-text&#039;).textContent.trim();&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     var base = &#039;pd-&lt;/del&gt;card&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-&#039; + (packId + &#039;-&#039; + seed).trim().replace(/\s+/g, &#039;_&#039;).replace(/[\u0000-\u001f\u007f]/g, &#039;&#039;), candidate = base&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;serial = 2;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     while (&lt;/del&gt;document&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.getElementById(candidate)&lt;/del&gt;) &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{ candidate = base + &#039;-&#039; + serial; serial++; }&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     card.id = candidate&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    }&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     var b = document.createElement(&amp;#039;button&amp;#039;); b.type = &amp;#039;button&amp;#039;; b.className = &amp;#039;pd-card-ui-toggle&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     var b = document.createElement(&amp;#039;button&amp;#039;); b.type = &amp;#039;button&amp;#039;; b.className = &amp;#039;pd-card-ui-toggle&amp;#039;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     b.setAttribute(&amp;#039;aria-label&amp;#039;, original.textContent.trim().replace(/\s+/g, &amp;#039; &amp;#039;));&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     b.setAttribute(&amp;#039;aria-label&amp;#039;, original.textContent.trim().replace(/\s+/g, &amp;#039; &amp;#039;));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l286&quot;&gt;第286行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第296行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  function init() { document.querySelectorAll(&amp;#039;.pd-card-ui-pack-root&amp;#039;).forEach(initPack); locate(); }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  function init() { document.querySelectorAll(&amp;#039;.pd-card-ui-pack-root&amp;#039;).forEach(initPack); locate(); }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  window.pdCards = { init: init };&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  window.pdCards = { init: init&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, resolveAnchors: resolveAnchors, dispose: function (container) { packs = packs.filter(function (p) { if (!container.contains(p.root)) return true; p.states.forEach(settle); return false; }); } &lt;/ins&gt;};&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  window.addEventListener(&amp;#039;hashchange&amp;#039;, locate);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  window.addEventListener(&amp;#039;hashchange&amp;#039;, locate);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  window.addEventListener(&amp;#039;resize&amp;#039;, function () { packs.forEach(function (p) { p.states.forEach(function (s) { settle(s); placeIcons(s); }); }); });&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  window.addEventListener(&amp;#039;resize&amp;#039;, function () { packs.forEach(function (p) { p.states.forEach(function (s) { settle(s); placeIcons(s); }); }); });&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key pigeon_games_wiki:diff:1.41:old-58310:rev-58323:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>TheNewMillium</name></author>
	</entry>
	<entry>
		<id>https://shanghaidc1.gaoice.run/index.php?title=%E5%BE%AE%E4%BB%B6:PD%E5%8D%A1%E7%89%8C&amp;diff=58310&amp;oldid=prev</id>
		<title>TheNewMillium：​创建页面，内容为“&lt;script&gt; /* Project Divide unified card interface. Loaded only by its widget; no dependencies. */ (function () {  &#039;use strict&#039;;  if (window.pdCards) { window.pdCards.init(); return; }  var packs = [], reduce = window.matchMedia(&#039;(prefers-reduced-motion: reduce)&#039;);  var collator = new Intl.Collator(&#039;zh-Hans-CN-u-co-pinyin&#039;, { numeric: true, sensitivity: &#039;base&#039; });  function button(text, action) {   var b = document.createElement(&#039;button&#039;); b.type = &#039;button&#039;; b.t…”</title>
		<link rel="alternate" type="text/html" href="https://shanghaidc1.gaoice.run/index.php?title=%E5%BE%AE%E4%BB%B6:PD%E5%8D%A1%E7%89%8C&amp;diff=58310&amp;oldid=prev"/>
		<updated>2026-10-15T07:07:47Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“&amp;lt;script&amp;gt; &lt;span class=&quot;autocomment&quot;&gt;Project Divide unified card interface. Loaded only by its widget; no dependencies.：​&lt;/span&gt; (function () {  &amp;#039;use strict&amp;#039;;  if (window.pdCards) { window.pdCards.init(); return; }  var packs = [], reduce = window.matchMedia(&amp;#039;(prefers-reduced-motion: reduce)&amp;#039;);  var collator = new Intl.Collator(&amp;#039;zh-Hans-CN-u-co-pinyin&amp;#039;, { numeric: true, sensitivity: &amp;#039;base&amp;#039; });  function button(text, action) {   var b = document.createElement(&amp;#039;button&amp;#039;); b.type = &amp;#039;button&amp;#039;; b.t…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;script&amp;gt;&lt;br /&gt;
/* Project Divide unified card interface. Loaded only by its widget; no dependencies. */&lt;br /&gt;
(function () {&lt;br /&gt;
 &amp;#039;use strict&amp;#039;;&lt;br /&gt;
 if (window.pdCards) { window.pdCards.init(); return; }&lt;br /&gt;
 var packs = [], reduce = window.matchMedia(&amp;#039;(prefers-reduced-motion: reduce)&amp;#039;);&lt;br /&gt;
 var collator = new Intl.Collator(&amp;#039;zh-Hans-CN-u-co-pinyin&amp;#039;, { numeric: true, sensitivity: &amp;#039;base&amp;#039; });&lt;br /&gt;
 function button(text, action) {&lt;br /&gt;
  var b = document.createElement(&amp;#039;button&amp;#039;); b.type = &amp;#039;button&amp;#039;; b.textContent = text;&lt;br /&gt;
  b.addEventListener(&amp;#039;click&amp;#039;, action); return b;&lt;br /&gt;
 }&lt;br /&gt;
 function cancelEffects(s) {&lt;br /&gt;
  (s.effects || []).forEach(function (a) { a.cancel(); }); s.effects = [];&lt;br /&gt;
  if (s.move) { s.move.cancel(); s.move = null; }&lt;br /&gt;
 }&lt;br /&gt;
 function clearHeight(s) {&lt;br /&gt;
  s.detail.hidden = !s.open; s.detail.inert = !s.open;&lt;br /&gt;
  s.detail.style.height = &amp;#039;&amp;#039;; s.detail.style.overflow = &amp;#039;&amp;#039;; s.detail.style.opacity = &amp;#039;&amp;#039;;&lt;br /&gt;
 }&lt;br /&gt;
 function settle(s) {&lt;br /&gt;
  if (s.animation) { s.animation.cancel(); s.animation = null; }&lt;br /&gt;
  cancelEffects(s); clearHeight(s);&lt;br /&gt;
 }&lt;br /&gt;
 function near(rect) { return rect.bottom &amp;gt; -100 &amp;amp;&amp;amp; rect.top &amp;lt; window.innerHeight + 100; }&lt;br /&gt;
 function layers(s) {&lt;br /&gt;
  var items = [], rules = s.detail.querySelector(&amp;#039;.pd-card-ui-rules&amp;#039;);&lt;br /&gt;
  s.detail.querySelectorAll(&amp;#039;.pd-card-ui-label&amp;#039;).forEach(function (el) { items.push({ el: el, delay: 0 }); });&lt;br /&gt;
  var skills = Array.from(rules ? rules.children : []).filter(function (el) { return el.classList.contains(&amp;#039;pd-skill&amp;#039;); });&lt;br /&gt;
  if (skills.length) skills.forEach(function (el, i) { items.push({ el: el, delay: 100 + Math.min(i * 25, 100) }); });&lt;br /&gt;
  else if (rules) items.push({ el: rules, delay: 100 });&lt;br /&gt;
  s.detail.querySelectorAll(&amp;#039;.pd-card-ui-field&amp;#039;).forEach(function (field, i) {&lt;br /&gt;
   Array.from(field.children).filter(function (el) { return !el.classList.contains(&amp;#039;pd-card-ui-label&amp;#039;); }).forEach(function (el) {&lt;br /&gt;
    items.push({ el: el, delay: 100 + Math.min(i * 25, 100) });&lt;br /&gt;
   });&lt;br /&gt;
  });&lt;br /&gt;
  var credit = s.detail.querySelector(&amp;#039;.pd-card-ui-credit&amp;#039;); if (credit) items.push({ el: credit, delay: 150 });&lt;br /&gt;
  return items;&lt;br /&gt;
 }&lt;br /&gt;
 function toggle(s, open, immediate) {&lt;br /&gt;
  if (s.open === open &amp;amp;&amp;amp; !immediate) return;&lt;br /&gt;
  var wasHidden = s.detail.hidden;&lt;br /&gt;
  var cs = getComputedStyle(s.detail);&lt;br /&gt;
  var height = wasHidden ? 0 : s.detail.getBoundingClientRect().height - parseFloat(cs.borderTopWidth) - parseFloat(cs.borderBottomWidth);&lt;br /&gt;
  var parts = layers(s).map(function (item) {&lt;br /&gt;
   var style = getComputedStyle(item.el);&lt;br /&gt;
   item.opacity = wasHidden ? 0 : Number(style.opacity);&lt;br /&gt;
   item.transform = wasHidden ? &amp;#039;translateY(6px)&amp;#039; : style.transform;&lt;br /&gt;
   return item;&lt;br /&gt;
  });&lt;br /&gt;
  if (s.animation) { s.animation.cancel(); s.animation = null; }&lt;br /&gt;
  cancelEffects(s);&lt;br /&gt;
  if (!open &amp;amp;&amp;amp; s.detail.contains(document.activeElement)) s.button.focus({ preventScroll: true });&lt;br /&gt;
  s.open = open; s.button.setAttribute(&amp;#039;aria-expanded&amp;#039;, String(open)); s.summary.setAttribute(&amp;#039;data-expanded&amp;#039;, String(open)); s.detail.inert = !open;&lt;br /&gt;
  s.detail.hidden = false;&lt;br /&gt;
  if (immediate || reduce.matches || !s.detail.animate) { settle(s); return; }&lt;br /&gt;
  s.detail.style.overflow = &amp;#039;hidden&amp;#039;;&lt;br /&gt;
  parts.forEach(function (item) {&lt;br /&gt;
   var effect = item.el.animate([&lt;br /&gt;
    { opacity: item.opacity, transform: item.transform },&lt;br /&gt;
    { opacity: open ? 1 : 0, transform: open ? &amp;#039;translateY(0)&amp;#039; : item.transform }&lt;br /&gt;
   ], { duration: open ? 250 : 100, delay: open &amp;amp;&amp;amp; wasHidden ? item.delay : 0, easing: &amp;#039;cubic-bezier(.2,.7,.2,1)&amp;#039;, fill: &amp;#039;both&amp;#039; });&lt;br /&gt;
   s.effects.push(effect);&lt;br /&gt;
   effect.onfinish = function () { if (open) { effect.cancel(); s.effects = s.effects.filter(function (a) { return a !== effect; }); } };&lt;br /&gt;
  });&lt;br /&gt;
  var a = s.detail.animate([{ height: Math.max(0, height) + &amp;#039;px&amp;#039; },&lt;br /&gt;
   { height: (open ? s.detail.scrollHeight : 0) + &amp;#039;px&amp;#039; }],&lt;br /&gt;
   { duration: open ? 300 : 200, easing: &amp;#039;cubic-bezier(.2,.7,.2,1)&amp;#039;, fill: &amp;#039;both&amp;#039; });&lt;br /&gt;
  s.animation = a;&lt;br /&gt;
  a.onfinish = function () {&lt;br /&gt;
   if (s.animation !== a) return;&lt;br /&gt;
   a.cancel(); s.animation = null;&lt;br /&gt;
   if (open) clearHeight(s); else settle(s);&lt;br /&gt;
  };&lt;br /&gt;
 }&lt;br /&gt;
 function batch(p, open) {&lt;br /&gt;
  var visible = p.states.map(function (s) { var r = s.card.getBoundingClientRect(); return r.bottom &amp;gt; 0 &amp;amp;&amp;amp; r.top &amp;lt; window.innerHeight; });&lt;br /&gt;
  p.states.forEach(function (s, i) { toggle(s, open, !visible[i]); });&lt;br /&gt;
 }&lt;br /&gt;
 function numeric(raw) {&lt;br /&gt;
  var v = raw.trim().replace(/−/g, &amp;#039;-&amp;#039;);&lt;br /&gt;
  return /^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/.test(v) ? Number(v) : null;&lt;br /&gt;
 }&lt;br /&gt;
 function placeIcons(s) {&lt;br /&gt;
  var group = s.indicators || s.summary.querySelector(&amp;#039;.pd-card-ui-indicators&amp;#039;);&lt;br /&gt;
  if (!group) return; s.indicators = group;&lt;br /&gt;
  var container = window.innerWidth &amp;lt; 700 ? s.summary.querySelector(&amp;#039;.pd-card-ui-type&amp;#039;) : s.summary.querySelector(&amp;#039;.pd-card-ui-name&amp;#039;);&lt;br /&gt;
  if (group.parentNode !== container) {&lt;br /&gt;
   if (window.innerWidth &amp;lt; 700) container.insertBefore(group, container.firstChild);&lt;br /&gt;
   else container.appendChild(group);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 function glyph(type) {&lt;br /&gt;
  var ns = &amp;#039;http://www.w3.org/2000/svg&amp;#039;;&lt;br /&gt;
  var svg = document.createElementNS(ns, &amp;#039;svg&amp;#039;);&lt;br /&gt;
  svg.setAttribute(&amp;#039;viewBox&amp;#039;, &amp;#039;0 0 14 14&amp;#039;); svg.setAttribute(&amp;#039;width&amp;#039;, &amp;#039;14&amp;#039;); svg.setAttribute(&amp;#039;height&amp;#039;, &amp;#039;14&amp;#039;);&lt;br /&gt;
  svg.setAttribute(&amp;#039;aria-hidden&amp;#039;, &amp;#039;true&amp;#039;); svg.setAttribute(&amp;#039;focusable&amp;#039;, &amp;#039;false&amp;#039;);&lt;br /&gt;
  var shape;&lt;br /&gt;
  if (type === &amp;#039;被动&amp;#039;) {&lt;br /&gt;
   shape = document.createElementNS(ns, &amp;#039;circle&amp;#039;); shape.setAttribute(&amp;#039;cx&amp;#039;, &amp;#039;7&amp;#039;); shape.setAttribute(&amp;#039;cy&amp;#039;, &amp;#039;7&amp;#039;); shape.setAttribute(&amp;#039;r&amp;#039;, &amp;#039;5.5&amp;#039;);&lt;br /&gt;
  } else if (type === &amp;#039;主动&amp;#039;) {&lt;br /&gt;
   shape = document.createElementNS(ns, &amp;#039;rect&amp;#039;); shape.setAttribute(&amp;#039;x&amp;#039;, &amp;#039;1.5&amp;#039;); shape.setAttribute(&amp;#039;y&amp;#039;, &amp;#039;1.5&amp;#039;); shape.setAttribute(&amp;#039;width&amp;#039;, &amp;#039;11&amp;#039;); shape.setAttribute(&amp;#039;height&amp;#039;, &amp;#039;11&amp;#039;);&lt;br /&gt;
  } else {&lt;br /&gt;
   shape = document.createElementNS(ns, &amp;#039;polygon&amp;#039;);&lt;br /&gt;
   shape.setAttribute(&amp;#039;points&amp;#039;, type === &amp;#039;特殊&amp;#039; ? &amp;#039;7,0.7 8.9,4.7 13.3,5.3 10.1,8.4 10.9,12.8 7,10.7 3.1,12.8 3.9,8.4 0.7,5.3 5.1,4.7&amp;#039; : &amp;#039;7,1.6 12.3,11.9 1.7,11.9&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
  shape.setAttribute(&amp;#039;fill&amp;#039;, type === &amp;#039;离场&amp;#039; ? &amp;#039;none&amp;#039; : &amp;#039;currentColor&amp;#039;);&lt;br /&gt;
  if (type === &amp;#039;离场&amp;#039;) { shape.setAttribute(&amp;#039;stroke&amp;#039;, &amp;#039;currentColor&amp;#039;); shape.setAttribute(&amp;#039;stroke-width&amp;#039;, &amp;#039;1.6&amp;#039;); shape.setAttribute(&amp;#039;stroke-linejoin&amp;#039;, &amp;#039;round&amp;#039;); }&lt;br /&gt;
  svg.appendChild(shape); return svg;&lt;br /&gt;
 }&lt;br /&gt;
 function enhanceDetails(detail) {&lt;br /&gt;
  detail.querySelectorAll(&amp;#039;.pd-card-ui-tags&amp;#039;).forEach(function (source) {&lt;br /&gt;
   if (source.dataset.pdTagsReady) return;&lt;br /&gt;
   var result = document.createDocumentFragment(), tag = document.createElement(&amp;#039;span&amp;#039;);&lt;br /&gt;
   tag.className = &amp;#039;pd-card-ui-tag&amp;#039;;&lt;br /&gt;
   function finish() {&lt;br /&gt;
    var walker = document.createTreeWalker(tag, NodeFilter.SHOW_TEXT), first;&lt;br /&gt;
    while ((first = walker.nextNode())) {&lt;br /&gt;
     if (first.textContent.trim()) { first.textContent = first.textContent.replace(/^\s*·\s*/, &amp;#039;&amp;#039;); break; }&lt;br /&gt;
    }&lt;br /&gt;
    if (tag.textContent.trim()) result.appendChild(tag);&lt;br /&gt;
    tag = document.createElement(&amp;#039;span&amp;#039;); tag.className = &amp;#039;pd-card-ui-tag&amp;#039;;&lt;br /&gt;
   }&lt;br /&gt;
   function visit(node) {&lt;br /&gt;
    if (node.nodeType === 1 &amp;amp;&amp;amp; node.tagName === &amp;#039;BR&amp;#039;) { finish(); return; }&lt;br /&gt;
    if (node.nodeType === 1 &amp;amp;&amp;amp; /^(P|UL|OL|LI|DIV)$/.test(node.tagName)) {&lt;br /&gt;
     finish(); Array.from(node.childNodes).forEach(visit); finish(); return;&lt;br /&gt;
    }&lt;br /&gt;
    // Split inline markup at explicit line breaks without flattening its links or formatting.&lt;br /&gt;
    if (node.nodeType === 1 &amp;amp;&amp;amp; node.querySelector(&amp;#039;br&amp;#039;)) {&lt;br /&gt;
     while (node.querySelector(&amp;#039;br&amp;#039;)) {&lt;br /&gt;
      var br = node.querySelector(&amp;#039;br&amp;#039;), range = document.createRange();&lt;br /&gt;
      range.setStart(node, 0); range.setEndBefore(br);&lt;br /&gt;
      var shell = node.cloneNode(false); shell.appendChild(range.extractContents()); tag.appendChild(shell);&lt;br /&gt;
      br.remove(); finish();&lt;br /&gt;
     }&lt;br /&gt;
    }&lt;br /&gt;
    tag.appendChild(node);&lt;br /&gt;
   }&lt;br /&gt;
   Array.from(source.childNodes).forEach(visit); finish(); source.replaceChildren(result);&lt;br /&gt;
   source.dataset.pdTagsReady = &amp;#039;true&amp;#039;;&lt;br /&gt;
  });&lt;br /&gt;
 }&lt;br /&gt;
 var activeSkill = null;&lt;br /&gt;
 function selectSkill(skill) {&lt;br /&gt;
  if (activeSkill) activeSkill.classList.remove(&amp;#039;pd-card-ui-skill-active&amp;#039;);&lt;br /&gt;
  activeSkill = skill;&lt;br /&gt;
  if (activeSkill) activeSkill.classList.add(&amp;#039;pd-card-ui-skill-active&amp;#039;);&lt;br /&gt;
 }&lt;br /&gt;
 function ownSkill(target) {&lt;br /&gt;
  var skill = target.closest(&amp;#039;.pd-skill&amp;#039;);&lt;br /&gt;
  while (skill &amp;amp;&amp;amp; skill.parentElement.closest(&amp;#039;.pd-skill&amp;#039;)) skill = skill.parentElement.closest(&amp;#039;.pd-skill&amp;#039;);&lt;br /&gt;
  return skill &amp;amp;&amp;amp; skill.id &amp;amp;&amp;amp; skill.closest(&amp;#039;.pd-card-ui-rules&amp;#039;) ? skill : null;&lt;br /&gt;
 }&lt;br /&gt;
 function enhanceSkills(s) {&lt;br /&gt;
  var kind = s.card.dataset.kind;&lt;br /&gt;
  if (kind !== &amp;#039;角色&amp;#039; &amp;amp;&amp;amp; kind !== &amp;#039;置物&amp;#039;) return;&lt;br /&gt;
  var rules = s.detail.querySelector(&amp;#039;.pd-card-ui-rules&amp;#039;);&lt;br /&gt;
  if (!rules) return;&lt;br /&gt;
  var skills = Array.from(rules.querySelectorAll(&amp;#039;.pd-skill&amp;#039;)).filter(function (el) {&lt;br /&gt;
   return !el.parentElement.closest(&amp;#039;.pd-skill&amp;#039;) &amp;amp;&amp;amp; el.closest(&amp;#039;.pd-card-ui-rules&amp;#039;) === rules;&lt;br /&gt;
  });&lt;br /&gt;
  var icons = document.createElement(&amp;#039;span&amp;#039;); icons.className = &amp;#039;pd-card-ui-skill-icons&amp;#039;;&lt;br /&gt;
  skills.forEach(function (skill, i) {&lt;br /&gt;
   skill.id = s.card.id + &amp;#039;-skill-&amp;#039; + (i + 1); skill.setAttribute(&amp;#039;tabindex&amp;#039;, &amp;#039;-1&amp;#039;);&lt;br /&gt;
   var heading = skill.querySelector(&amp;#039;.pd-skill-title&amp;#039;);&lt;br /&gt;
   var type = heading.querySelector(&amp;#039;.pd-skill-type&amp;#039;).textContent.trim().replace(/^【|】$/g, &amp;#039;&amp;#039;);&lt;br /&gt;
   var iconType = /主动$/.test(type) ? &amp;#039;主动&amp;#039; : type;&lt;br /&gt;
   if ([&amp;#039;登场&amp;#039;,&amp;#039;被动&amp;#039;,&amp;#039;主动&amp;#039;,&amp;#039;离场&amp;#039;,&amp;#039;特殊&amp;#039;].indexOf(iconType) &amp;lt; 0) return;&lt;br /&gt;
   var label = type + &amp;#039;：&amp;#039; + heading.querySelector(&amp;#039;.pd-skill-name&amp;#039;).textContent.trim();&lt;br /&gt;
   var link = document.createElement(&amp;#039;a&amp;#039;); link.className = &amp;#039;pd-card-ui-skill-link&amp;#039;;&lt;br /&gt;
   link.href = &amp;#039;#&amp;#039; + skill.id; link.title = label; link.setAttribute(&amp;#039;aria-label&amp;#039;, label);&lt;br /&gt;
   link.appendChild(glyph(iconType));&lt;br /&gt;
   link.addEventListener(&amp;#039;click&amp;#039;, function (event) {&lt;br /&gt;
    if (event.button !== 0 || event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) return;&lt;br /&gt;
    event.preventDefault(); toggle(s, true, true); selectSkill(skill);&lt;br /&gt;
    if (location.hash !== &amp;#039;#&amp;#039; + skill.id) location.hash = skill.id;&lt;br /&gt;
    skill.focus({ preventScroll: true }); skill.scrollIntoView({ block: &amp;#039;start&amp;#039;, behavior: &amp;#039;instant&amp;#039; });&lt;br /&gt;
   });&lt;br /&gt;
   icons.appendChild(link);&lt;br /&gt;
  });&lt;br /&gt;
  if (icons.childElementCount) {&lt;br /&gt;
   s.icons = icons;&lt;br /&gt;
   s.indicators = s.summary.querySelector(&amp;#039;.pd-card-ui-indicators&amp;#039;);&lt;br /&gt;
   if (!s.indicators) { s.indicators = document.createElement(&amp;#039;span&amp;#039;); s.indicators.className = &amp;#039;pd-card-ui-indicators&amp;#039;; }&lt;br /&gt;
   s.indicators.insertBefore(icons, s.indicators.firstChild);&lt;br /&gt;
   s.summary.classList.add(&amp;#039;pd-card-ui-has-skills&amp;#039;); placeIcons(s);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 function key(s, field) {&lt;br /&gt;
  if (field === &amp;#039;number&amp;#039;) return s.number === &amp;#039;未编号&amp;#039; ? null : s.number;&lt;br /&gt;
  if (field === &amp;#039;name&amp;#039;) return s.name;&lt;br /&gt;
  if (field === &amp;#039;rarity&amp;#039;) { var r = [&amp;#039;C&amp;#039;, &amp;#039;B&amp;#039;, &amp;#039;A&amp;#039;, &amp;#039;S&amp;#039;].indexOf(s.card.dataset.rarity.trim()); return r &amp;lt; 0 ? null : r; }&lt;br /&gt;
  return numeric(s.card.dataset[field] || &amp;#039;&amp;#039;);&lt;br /&gt;
 }&lt;br /&gt;
 function sort(p) {&lt;br /&gt;
  var field = p.select.value;&lt;br /&gt;
  p.states.forEach(settle);&lt;br /&gt;
  var before = p.states.map(function (s) { return s.card.getBoundingClientRect(); });&lt;br /&gt;
  var ordered = p.states.slice().sort(function (a, b) {&lt;br /&gt;
   if (field === &amp;#039;original&amp;#039;) return a.index - b.index;&lt;br /&gt;
   var x = key(a, field), y = key(b, field);&lt;br /&gt;
   if (x === null || y === null) return x === y ? a.index - b.index : x === null ? 1 : -1;&lt;br /&gt;
   var diff = typeof x === &amp;#039;number&amp;#039; ? x - y : collator.compare(x, y);&lt;br /&gt;
   return diff ? diff * p.direction : a.index - b.index;&lt;br /&gt;
  });&lt;br /&gt;
  ordered.forEach(function (s) { p.list.appendChild(s.card); });&lt;br /&gt;
  if (!reduce.matches) p.states.forEach(function (s, i) {&lt;br /&gt;
   if (!s.card.animate) return;&lt;br /&gt;
   var old = before[i], rect = s.card.getBoundingClientRect(), dy = old.top - rect.top;&lt;br /&gt;
   if (Math.abs(dy) &amp;lt; 1 || !near(rect)) return;&lt;br /&gt;
   var shortMove = near(old) &amp;amp;&amp;amp; Math.abs(dy) &amp;lt;= 160;&lt;br /&gt;
   var a = s.card.animate(shortMove ? [{ transform: &amp;#039;translateY(&amp;#039; + dy + &amp;#039;px)&amp;#039; }, { transform: &amp;#039;translateY(0)&amp;#039; }] : [{ opacity: .65 }, { opacity: 1 }],&lt;br /&gt;
    { duration: shortMove ? 250 : 160, easing: &amp;#039;cubic-bezier(.2,.7,.2,1)&amp;#039;, fill: &amp;#039;both&amp;#039; });&lt;br /&gt;
   s.move = a; a.onfinish = function () { if (s.move === a) { a.cancel(); s.move = null; } };&lt;br /&gt;
  });&lt;br /&gt;
  p.directionButton.disabled = field === &amp;#039;original&amp;#039;;&lt;br /&gt;
  p.directionButton.textContent = p.direction === 1 ? &amp;#039;升序 ↑&amp;#039; : &amp;#039;降序 ↓&amp;#039;;&lt;br /&gt;
 }&lt;br /&gt;
 function initPack(root) {&lt;br /&gt;
  if (root.dataset.pdCardsReady) return;&lt;br /&gt;
  var p = { root: root, list: root.querySelector(&amp;#039;.pd-card-ui-list&amp;#039;), states: [], direction: 1 };&lt;br /&gt;
  var controls = root.querySelector(&amp;#039;.pd-card-ui-controls&amp;#039;);&lt;br /&gt;
  try {&lt;br /&gt;
   Array.from(p.list.children).filter(function (c) { return c.classList.contains(&amp;#039;pd-card-ui-card&amp;#039;); }).forEach(function (card, i) {&lt;br /&gt;
    var original = card.querySelector(&amp;#039;.pd-card-ui-summary&amp;#039;);&lt;br /&gt;
    if (!card.id) {&lt;br /&gt;
     var packId = root.dataset.pack || root.dataset.packName || &amp;#039;cards&amp;#039;;&lt;br /&gt;
     var seed = card.dataset.number.trim() || original.querySelector(&amp;#039;.pd-card-ui-name-text&amp;#039;).textContent.trim();&lt;br /&gt;
     var base = &amp;#039;pd-card-&amp;#039; + (packId + &amp;#039;-&amp;#039; + seed).trim().replace(/\s+/g, &amp;#039;_&amp;#039;).replace(/[\u0000-\u001f\u007f]/g, &amp;#039;&amp;#039;), candidate = base, serial = 2;&lt;br /&gt;
     while (document.getElementById(candidate)) { candidate = base + &amp;#039;-&amp;#039; + serial; serial++; }&lt;br /&gt;
     card.id = candidate;&lt;br /&gt;
    }&lt;br /&gt;
    var b = document.createElement(&amp;#039;button&amp;#039;); b.type = &amp;#039;button&amp;#039;; b.className = &amp;#039;pd-card-ui-toggle&amp;#039;;&lt;br /&gt;
    b.setAttribute(&amp;#039;aria-label&amp;#039;, original.textContent.trim().replace(/\s+/g, &amp;#039; &amp;#039;));&lt;br /&gt;
    var detail = card.querySelector(&amp;#039;.pd-card-ui-detail&amp;#039;); detail.id = card.id + &amp;#039;-detail&amp;#039;;&lt;br /&gt;
    b.setAttribute(&amp;#039;aria-controls&amp;#039;, detail.id);&lt;br /&gt;
    var s = { card: card, button: b, detail: detail, summary: original, index: i, open: false, animation: null,&lt;br /&gt;
     number: original.querySelector(&amp;#039;.pd-card-ui-number&amp;#039;).textContent.trim(), name: original.querySelector(&amp;#039;.pd-card-ui-name-text&amp;#039;).textContent.trim() };&lt;br /&gt;
    p.states.push(s);&lt;br /&gt;
    detail.addEventListener(&amp;#039;click&amp;#039;, function (event) { var skill = ownSkill(event.target); if (skill) selectSkill(skill); });&lt;br /&gt;
    detail.addEventListener(&amp;#039;focusin&amp;#039;, function (event) { var skill = ownSkill(event.target); if (skill) selectSkill(skill); });&lt;br /&gt;
    original.appendChild(b); b.addEventListener(&amp;#039;click&amp;#039;, function () { toggle(s, !s.open, false); });&lt;br /&gt;
    try { enhanceDetails(detail); enhanceSkills(s); placeIcons(s); } catch (error) {&lt;br /&gt;
     if (s.icons) s.icons.remove(); s.icons = null; original.classList.remove(&amp;#039;pd-card-ui-has-skills&amp;#039;);&lt;br /&gt;
     console.error(&amp;#039;PD skill icons unavailable; skill text retained.&amp;#039;, error);&lt;br /&gt;
    }&lt;br /&gt;
   });&lt;br /&gt;
   var count = document.createElement(&amp;#039;span&amp;#039;); count.className = &amp;#039;pd-card-ui-count&amp;#039;; count.textContent = p.states.length + &amp;#039; 张卡牌&amp;#039;;&lt;br /&gt;
   var label = document.createElement(&amp;#039;label&amp;#039;); label.textContent = &amp;#039;排序方式&amp;#039;;&lt;br /&gt;
   p.select = document.createElement(&amp;#039;select&amp;#039;); p.select.style.colorScheme = &amp;#039;dark&amp;#039;;&lt;br /&gt;
   p.list.style.overflowAnchor = &amp;#039;none&amp;#039;;&lt;br /&gt;
   [[&amp;#039;original&amp;#039;,&amp;#039;原顺序&amp;#039;],[&amp;#039;number&amp;#039;,&amp;#039;编号&amp;#039;],[&amp;#039;name&amp;#039;,&amp;#039;名字&amp;#039;],[&amp;#039;ep&amp;#039;,&amp;#039;EP&amp;#039;],[&amp;#039;bp&amp;#039;,&amp;#039;BP&amp;#039;],[&amp;#039;kb&amp;#039;,&amp;#039;KB&amp;#039;],[&amp;#039;rarity&amp;#039;,&amp;#039;稀有度&amp;#039;]].forEach(function (item) {&lt;br /&gt;
    var option = document.createElement(&amp;#039;option&amp;#039;); option.value = item[0]; option.textContent = item[1]; p.select.appendChild(option);&lt;br /&gt;
   });&lt;br /&gt;
   label.appendChild(p.select);&lt;br /&gt;
   p.directionButton = button(&amp;#039;升序 ↑&amp;#039;, function () { p.direction *= -1; sort(p); }); p.directionButton.disabled = true;&lt;br /&gt;
   p.select.addEventListener(&amp;#039;change&amp;#039;, function () { p.direction = 1; sort(p); });&lt;br /&gt;
   var expand = button(&amp;#039;全部展开&amp;#039;, function () { batch(p, true); });&lt;br /&gt;
   var collapse = button(&amp;#039;全部收起&amp;#039;, function () { batch(p, false); });&lt;br /&gt;
   p.select.title = &amp;#039;KB 按正负数值排序；缺失与复合数值排在末尾。&amp;#039;;&lt;br /&gt;
   var sorting = document.createElement(&amp;#039;div&amp;#039;); sorting.className = &amp;#039;pd-card-ui-sort-controls&amp;#039;;&lt;br /&gt;
   var bulk = document.createElement(&amp;#039;div&amp;#039;); bulk.className = &amp;#039;pd-card-ui-bulk-controls&amp;#039;;&lt;br /&gt;
   sorting.append(label, p.directionButton); bulk.append(expand, collapse); controls.append(sorting, bulk);&lt;br /&gt;
   p.states.forEach(function (s) { toggle(s, false, true); });&lt;br /&gt;
   root.classList.add(&amp;#039;pd-card-ui-ready&amp;#039;); root.dataset.pdCardsReady = &amp;#039;true&amp;#039;; packs.push(p);&lt;br /&gt;
  } catch (error) {&lt;br /&gt;
   p.states.forEach(function (s) {&lt;br /&gt;
    s.open = true; settle(s);&lt;br /&gt;
    s.button.remove(); if (s.icons) s.icons.remove();&lt;br /&gt;
    s.summary.removeAttribute(&amp;#039;data-expanded&amp;#039;); s.summary.classList.remove(&amp;#039;pd-card-ui-has-skills&amp;#039;);&lt;br /&gt;
   });&lt;br /&gt;
   controls.replaceChildren(); root.classList.remove(&amp;#039;pd-card-ui-ready&amp;#039;);&lt;br /&gt;
   console.error(&amp;#039;PD card demo initialization failed; full content retained.&amp;#039;, error);&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 function locate() {&lt;br /&gt;
  var id; try { id = decodeURIComponent(location.hash.slice(1)); } catch (_) { return; }&lt;br /&gt;
  var target = document.getElementById(id);&lt;br /&gt;
  selectSkill(target ? ownSkill(target) : null);&lt;br /&gt;
  if (!target) return;&lt;br /&gt;
  packs.forEach(function (p) { p.states.forEach(function (s) {&lt;br /&gt;
   if (s.card === target || s.card.contains(target)) {&lt;br /&gt;
    toggle(s, true, true); requestAnimationFrame(function () { target.scrollIntoView({ block: &amp;#039;start&amp;#039;, behavior: &amp;#039;instant&amp;#039; }); });&lt;br /&gt;
   }&lt;br /&gt;
  }); });&lt;br /&gt;
 }&lt;br /&gt;
 function init() { document.querySelectorAll(&amp;#039;.pd-card-ui-pack-root&amp;#039;).forEach(initPack); locate(); }&lt;br /&gt;
 window.pdCards = { init: init };&lt;br /&gt;
 window.addEventListener(&amp;#039;hashchange&amp;#039;, locate);&lt;br /&gt;
 window.addEventListener(&amp;#039;resize&amp;#039;, function () { packs.forEach(function (p) { p.states.forEach(function (s) { settle(s); placeIcons(s); }); }); });&lt;br /&gt;
 reduce.addEventListener(&amp;#039;change&amp;#039;, function () { packs.forEach(function (p) { p.states.forEach(settle); }); });&lt;br /&gt;
 window.addEventListener(&amp;#039;beforeprint&amp;#039;, function () { packs.forEach(function (p) { p.states.forEach(function (s) { settle(s); s.detail.inert = false; }); }); });&lt;br /&gt;
 window.addEventListener(&amp;#039;afterprint&amp;#039;, function () { packs.forEach(function (p) { p.states.forEach(settle); }); });&lt;br /&gt;
 if (document.readyState === &amp;#039;loading&amp;#039;) document.addEventListener(&amp;#039;DOMContentLoaded&amp;#039;, init, { once: true }); else init();&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;/div&gt;</summary>
		<author><name>TheNewMillium</name></author>
	</entry>
</feed>