fixed # 补全部分卡牌

fixed # 修复部分已知BUG
This commit is contained in:
2026-10-04 19:32:38 +08:00
parent c448da39c2
commit 94a2a6724b
163 changed files with 14008 additions and 1537 deletions
+120 -6
View File
@@ -1231,22 +1231,22 @@ dialog.mengsan-deck-dialog-shuying::backdrop { background: #080706b8; }
.mengsan-deck-dialog-shuying .ms-deck-button[aria-pressed="true"] { background: #dcb578; color: #241a10; border-color: #f9dda6; }
.mengsan-deck-dialog-shuying .ms-deck-summary, .mengsan-deck-dialog-shuying .ms-deck-footer { color: var(--ms-muted); font-size: 13px; flex-shrink: 0; }
.mengsan-deck-dialog-shuying .ms-deck-body { flex: 1; min-height: 0; overflow: auto; overscroll-behavior: contain; padding: 5px; scrollbar-gutter: stable; }
.mengsan-deck-dialog-shuying .ms-deck-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 16px; align-items: stretch; }
.mengsan-deck-dialog-shuying .ms-deck-card { display: flex; flex-direction: column; gap: 8px; width: 100%; min-width: 0; padding: 8px; border: 1px solid #9e7b49; background: #e4d0aa; color: #2e2419; text-align: left; box-shadow: 0 4px 10px #0005; }
.mengsan-deck-dialog-shuying .ms-deck-grid { display: grid; grid-template-columns: repeat(auto-fill, 176px); gap: 16px; align-items: start; align-content: start; justify-content: start; }
.mengsan-deck-dialog-shuying .ms-deck-card { display: flex; flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 8px; width: 100%; min-width: 0; height: 400px; overflow: hidden; padding: 8px; border: 1px solid #9e7b49; background: #e4d0aa; color: #2e2419; text-align: left; box-shadow: 0 4px 10px #0005; }
.mengsan-deck-dialog-shuying .ms-deck-card:hover { border-color: #ffe3a5; background: #f0ddb7; }
.mengsan-deck-dialog-shuying .ms-deck-face { display: flex; flex-direction: column; gap: 5px; min-width: 0; color: #2e2419; background: #e4d0aa; }
.mengsan-deck-dialog-shuying .ms-deck-corner { font-size: 14px; font-weight: 700; }
.mengsan-deck-dialog-shuying .ms-deck-red { color: #9b2920; }
.mengsan-deck-dialog-shuying .ms-deck-art { position: relative; display: grid; place-items: center; height: 116px; overflow: hidden; background: linear-gradient(145deg, #8a765b, #c0aa83); border: 1px solid #8b734f; border-radius: 3px; }
.mengsan-deck-dialog-shuying .ms-deck-art { position: relative; display: grid; place-items: center; width: 100%; height: auto; min-height: 0; aspect-ratio: 5 / 7; align-self: stretch; flex-shrink: 0; overflow: hidden; background: linear-gradient(145deg, #8a765b, #c0aa83); border: 1px solid #8b734f; border-radius: 3px; }
.mengsan-deck-dialog-shuying .ms-deck-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
.mengsan-deck-dialog-shuying .ms-deck-glyph { font: 700 28px "KaiTi", serif; text-align: center; }
.mengsan-deck-dialog-shuying .ms-deck-name { font: 700 21px/1.4 "KaiTi", serif; }
.mengsan-deck-dialog-shuying .ms-deck-meta, .mengsan-deck-dialog-shuying .ms-deck-tags { font-size: 12px; }
.mengsan-deck-dialog-shuying .ms-deck-tags { color: #813d18; font-weight: 700; }
.mengsan-deck-dialog-shuying .ms-deck-excerpt { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 12px; line-height: 1.5; }
.mengsan-deck-dialog-shuying .ms-deck-excerpt { flex: 0 0 36px; height: 36px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 12px; line-height: 1.5; }
.mengsan-deck-dialog-shuying .ms-deck-detail-content { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 28px; margin-top: 18px; }
.mengsan-deck-dialog-shuying .ms-deck-detail-content > .ms-deck-face { padding: 14px; border-radius: 6px; align-self: start; }
.mengsan-deck-dialog-shuying .ms-deck-detail-content .ms-deck-art { height: 190px; }
.mengsan-deck-dialog-shuying .ms-deck-detail-content .ms-deck-art { width: 100%; height: auto; aspect-ratio: 5 / 7; }
.mengsan-deck-dialog-shuying .ms-deck-detail-copy { display: flex; flex-direction: column; gap: 14px; min-width: 0; overflow-wrap: anywhere; }
.mengsan-deck-dialog-shuying .ms-deck-detail-copy h3 { font-size: 26px; }
.mengsan-deck-dialog-shuying .ms-deck-rules { white-space: pre-line; line-height: 1.85; }
@@ -1255,7 +1255,7 @@ dialog.mengsan-deck-dialog-shuying::backdrop { background: #080706b8; }
.mengsan-deck-dialog-shuying .ms-deck-empty { padding: 24px; grid-column: 1 / -1; }
@media (max-width: 600px) {
dialog.mengsan-deck-dialog-shuying { width: calc(100vw - 12px); height: calc(100dvh - 12px); max-height: calc(100dvh - 12px); padding: 14px; gap: 10px !important; }
.mengsan-deck-dialog-shuying .ms-deck-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.mengsan-deck-dialog-shuying .ms-deck-grid { grid-template-columns: repeat(2, minmax(0, 176px)); gap: 10px; }
.mengsan-deck-dialog-shuying .ms-deck-detail-content { grid-template-columns: minmax(0, 1fr); gap: 18px; }
.mengsan-deck-dialog-shuying .ms-deck-detail-content > .ms-deck-face { width: 190px; justify-self: center; }
.mengsan-deck-dialog-shuying .ms-deck-summary { font-size: 12px; }
@@ -1445,3 +1445,117 @@ body.mengsan-battle-ui-shuying :is(
.mengsan-deck-dialog-shuying .ms-catalog-field:not(:first-child) { flex: 1 1 90px; }
.mengsan-deck-dialog-shuying .ms-catalog-filters > button { padding: 8px 10px; }
}
/* Same stable card geometry in held deck, encyclopedia and personal battle piles. */
.mengsan-deck-dialog-shuying .ms-deck-grid .ms-deck-face { display: grid; grid-template-rows: 21px auto 30px 18px 18px; gap: 5px; width: 100%; min-width: 0; flex-shrink: 0; align-items: stretch; }
.mengsan-deck-dialog-shuying .ms-deck-grid .ms-deck-corner,
.mengsan-deck-dialog-shuying .ms-deck-grid .ms-deck-name,
.mengsan-deck-dialog-shuying .ms-deck-grid .ms-deck-meta,
.mengsan-deck-dialog-shuying .ms-deck-grid .ms-deck-tags { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mengsan-deck-dialog-shuying .ms-deck-grid .ms-deck-art { width: 100%; height: auto; aspect-ratio: 5 / 7; }
@media (max-width: 600px) {
.mengsan-deck-dialog-shuying .ms-deck-grid .ms-deck-card { height: 374px; }
}
/* Compact browsing only; full descriptions live in the existing detail view. */
.mengsan-deck-dialog-shuying .ms-library-grid { grid-template-columns: repeat(auto-fill, 112px); gap: 8px; justify-content: space-between; }
.mengsan-deck-dialog-shuying .ms-library-grid .ms-deck-card { position: relative; height: var(--ms-card-height, 218px); padding: 6px; gap: 3px; }
.mengsan-deck-dialog-shuying .ms-library-grid .ms-deck-face { flex: 1; min-height: 0; grid-template-rows: 18px minmax(0, 1fr) 20px; gap: 2px; }
.mengsan-deck-dialog-shuying .ms-library-grid .ms-deck-art { width: var(--ms-card-art-width, 98px); max-width: 100%; height: auto; aspect-ratio: 5 / 7; justify-self: center; align-self: center; }
.mengsan-deck-dialog-shuying .ms-library-grid .ms-deck-corner { font-size: 12px; line-height: 18px; }
.mengsan-deck-dialog-shuying .ms-library-grid .ms-deck-name { font-size: 16px; line-height: 20px; }
.mengsan-deck-dialog-shuying .ms-library-grid .ms-deck-meta { display: none; }
.mengsan-deck-dialog-shuying .ms-library-grid .ms-deck-tags { position: absolute; top: 6px; right: 6px; max-width: 54px; font-size: 12px; line-height: 18px; background: #e4d0aa; }
.mengsan-deck-dialog-shuying .ms-library-grid .ms-deck-excerpt { flex: 0 0 18px; height: 18px; line-height: 18px; -webkit-line-clamp: 1; }
.mengsan-deck-dialog-shuying .ms-library-grid .ms-deck-card { contain: layout paint style; }
.mengsan-deck-dialog-shuying .ms-library-grid .ms-deck-card:focus-visible { outline-offset: -3px; }
.mengsan-deck-dialog-shuying .ms-deck-body { overflow-anchor: none; scroll-behavior: auto; }
@media (max-width: 600px) {
.mengsan-deck-dialog-shuying .ms-library-grid { grid-template-columns: repeat(2, minmax(0, 112px)); }
}
@media (max-width: 600px) {
dialog.mengsan-deck-dialog-shuying { padding: 10px; gap: 6px !important; }
.mengsan-deck-dialog-shuying .ms-deck-title { font-size: 22px; }
.mengsan-deck-dialog-shuying .ms-deck-eyebrow { display: none; }
.mengsan-deck-dialog-shuying .ms-catalog-field > span { display: none; }
.mengsan-deck-dialog-shuying .ms-catalog-field:not(:first-child) { flex: 1 1 64px; }
.mengsan-deck-dialog-shuying .ms-catalog-filters > button { padding: 8px; font-size: 13px; }
.mengsan-deck-dialog-shuying .ms-catalog-select { font-size: 13px; padding: 8px 6px; }
.mengsan-deck-dialog-shuying .ms-deck-footer { font-size: 12px; line-height: 18px; }
}
/* Same transparent infection frame in held deck, atlas, piles and detail. */
.mengsan-deck-dialog-shuying .ms-deck-art[data-mengsan-overlay="infection"]::before {
content: "";
z-index: 1;
position: absolute;
inset: 0;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
border-radius: inherit;
pointer-events: none;
background-image: url("../assets/card-overlays/infection-sprite.webp");
/* 30 source frames, six columns/five rows, 192x260 per cell. */
background-size: 600% 500%;
background-position: 0% 0%;
background-repeat: no-repeat;
animation: mengsan-infection-frames-shuying 2s steps(1, end) infinite;
}
@keyframes mengsan-infection-frames-shuying {
0% { background-position: 0% 0%; }
3.333333% { background-position: 20% 0%; }
6.666667% { background-position: 40% 0%; }
10% { background-position: 60% 0%; }
13.333333% { background-position: 80% 0%; }
16.666667% { background-position: 100% 0%; }
20% { background-position: 0% 25%; }
23.333333% { background-position: 20% 25%; }
26.666667% { background-position: 40% 25%; }
30% { background-position: 60% 25%; }
33.333333% { background-position: 80% 25%; }
36.666667% { background-position: 100% 25%; }
40% { background-position: 0% 50%; }
43.333333% { background-position: 20% 50%; }
46.666667% { background-position: 40% 50%; }
50% { background-position: 60% 50%; }
53.333333% { background-position: 80% 50%; }
56.666667% { background-position: 100% 50%; }
60% { background-position: 0% 75%; }
63.333333% { background-position: 20% 75%; }
66.666667% { background-position: 40% 75%; }
70% { background-position: 60% 75%; }
73.333333% { background-position: 80% 75%; }
76.666667% { background-position: 100% 75%; }
80% { background-position: 0% 100%; }
83.333333% { background-position: 20% 100%; }
86.666667% { background-position: 40% 100%; }
90% { background-position: 60% 100%; }
93.333333% { background-position: 80% 100%; }
96.666667% { background-position: 100% 100%; }
100% { background-position: 100% 100%; }
}
@media (prefers-reduced-motion: reduce) {
.mengsan-deck-dialog-shuying .ms-deck-art[data-mengsan-overlay="infection"]::before {
animation: none;
background-position: 0% 0%;
}
}
/* 配色统一来自 cards/rarity.js;pending 不改变旧卡面,尚未分配不等于普通。 */
.mengsan-deck-dialog-shuying .ms-deck-face[data-mengsan-rarity]:not([data-mengsan-rarity="pending"]),
.mengsan-card-choice-tile-shuying[data-mengsan-rarity]:not([data-mengsan-rarity="pending"]) {
border-color: var(--ms-rarity-metal); box-shadow: inset 0 0 0 2px var(--ms-rarity-accent);
background: linear-gradient(145deg, var(--ms-rarity-dark), #231f1b);
}
.mengsan-deck-dialog-shuying .ms-deck-face[data-mengsan-rarity]:not([data-mengsan-rarity="pending"]) :is(.ms-deck-name, .ms-deck-corner),
.mengsan-card-choice-tile-shuying[data-mengsan-rarity]:not([data-mengsan-rarity="pending"]) :is(.mengsan-card-choice-name-shuying, .mengsan-card-choice-kind-shuying) {
background: var(--ms-rarity-accent); color: var(--ms-rarity-ink); border-color: var(--ms-rarity-metal);
}
.mengsan-deck-dialog-shuying .ms-deck-face[data-mengsan-rarity]:not([data-mengsan-rarity="pending"]) .ms-deck-art,
.mengsan-card-choice-tile-shuying[data-mengsan-rarity]:not([data-mengsan-rarity="pending"]) .mengsan-card-choice-art-shuying { border-color: var(--ms-rarity-accent); }
.mengsan-deck-dialog-shuying .ms-deck-face[data-mengsan-rarity]:not([data-mengsan-rarity="pending"]) :is(.ms-deck-meta, .ms-deck-tags) { color: #f6ebd6; }
.mengsan-deck-dialog-shuying .ms-deck-rarity-label { color: #d7c5a2; }
.mengsan-card-choice-tile-shuying[data-mengsan-rarity]:not([data-mengsan-rarity="pending"]):hover { border-color: var(--ms-rarity-accent); }