/* ===== 战斗特效色 token（封装伤害飘字/暴击/护盾等战斗 UI 专属色） ===== */
:root {
    --combat-damage: #e8c878;           /* 伤害飘字金 */
    --combat-crit: #ff5a5a;             /* 暴击红 */
    --combat-wound: #c85a3c;            /* 创伤棕 */
    --combat-dark: #1a0808;             /* 战斗暗背景 */
}

/* ===== 死亡遮罩 ===== */
/* ===== 妖兽遭遇面板 · gc-dialog.mx-dialog（2026-07-19） =====
   壳 14 / 内卡 10 / 钮 8 · 无左轨 · 无通栏顶条
   主栏内 absolute 叠层；按钮吃全局 modal-btn */
.encounter-overlay {
    position: absolute;
    inset: 0;
    background: color-mix(in srgb, var(--combat-dark) 92%, transparent);
    backdrop-filter: blur(3px);
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    animation: fadeIn 0.3s ease;
    overflow-y: auto;
    padding: var(--space-12);
    box-sizing: border-box;
}
/* 人机验证弹出时挂起遭遇层点击，避免与验证窗叠层导致两边都点不中 */
.encounter-overlay.is-suspended-by-verify,
#adventureOverlay.is-suspended-by-verify,
#dungeonResultOverlay.is-suspended-by-verify {
    pointer-events: none !important;
    filter: brightness(0.72);
}
/* 本命超限开启确认叠在遭遇层上时同样挂起，避免点确认却点到迎战/开关 */
.encounter-overlay.is-suspended-by-confirm {
    pointer-events: none !important;
    filter: brightness(0.72);
}
/* 验证窗必须压过遭遇层与普通 top 弹窗 */
.modal-overlay.anti-cheat-verify-overlay {
    z-index: calc(var(--z-overlay-top, 120000) + 80) !important;
    pointer-events: auto !important;
}
.modal-overlay.anti-cheat-verify-overlay .modal-content {
    pointer-events: auto !important;
    position: relative;
    z-index: 1;
}
body.anti-cheat-verify-open .encounter-overlay:not(.hidden) {
    /* 二次保险：验证打开时遭遇层不可点 */
    pointer-events: none !important;
}

/* 人机验证 · 四选一：强制可见，避免被壳 flex/主题钮样式挤没或 0 高 */
.ac-verify-dialog.gc-dialog {
    overflow: visible !important;
}
.ac-verify-mid.gc-mid {
    display: flex !important;
    flex-direction: column !important;
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow: visible !important;
    padding: var(--space-14) var(--space-16) var(--space-8) !important;
    text-align: center !important;
}
.ac-verify-hint {
    text-align: left !important;
    margin: 0 0 var(--space-10) !important;
    flex-shrink: 0 !important;
}
.ac-verify-q {
    text-align: center !important;
    font-size: var(--font-heading) !important;
    font-weight: 700 !important;
    color: var(--text-gold, var(--accent-gold)) !important;
    letter-spacing: 0.5px !important;
    line-height: 1.5 !important;
    margin: 0 0 var(--space-4) !important;
    flex-shrink: 0 !important;
}
.ac-verify-options {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: var(--space-10) !important;
    margin: var(--space-14) 0 var(--space-4) !important;
    flex-shrink: 0 !important;
    width: 100% !important;
    box-sizing: border-box !important;
}
.ac-verify-options .ac-verify-opt,
button.ac-verify-opt.modal-btn {
    flex: 1 1 calc(50% - 10px) !important;
    min-width: calc(50% - 10px) !important;
    max-width: 100% !important;
    min-height: 48px !important;
    height: auto !important;
    max-height: none !important;
    padding: var(--space-10) var(--space-12) !important;
    font-size: var(--font-heading) !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    border-radius: var(--radius-md) !important;
    border: 1px solid color-mix(in srgb, var(--accent-gold) 45%, var(--border-color)) !important;
    background: color-mix(in srgb, var(--accent-gold) 10%, var(--bg-card, var(--bg-panel))) !important;
    color: var(--text-gold, var(--accent-gold)) !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-sizing: border-box !important;
    visibility: visible !important;
    opacity: 1 !important;
    pointer-events: auto !important;
    cursor: pointer !important;
    white-space: nowrap !important;
}
.ac-verify-options .ac-verify-opt:hover,
button.ac-verify-opt.modal-btn:hover {
    background: color-mix(in srgb, var(--accent-gold) 18%, var(--bg-card, var(--bg-panel))) !important;
    border-color: color-mix(in srgb, var(--accent-gold) 60%, var(--border-color)) !important;
}
.ac-verify-options .ac-verify-opt.is-busy {
    opacity: 0.65 !important;
    pointer-events: none !important;
}
.ac-verify-foot {
    margin-top: 0 !important;
    padding: var(--space-10) var(--space-16) var(--space-14) !important;
}
.encounter-overlay--force {
    animation: encounterForcePulse 1s ease-in-out infinite;
}
@keyframes encounterForcePulse {
    0%, 100% { box-shadow: inset 0 0 0 3px color-mix(in srgb, var(--accent-crimson) 55%, transparent); }
    50% { box-shadow: inset 0 0 0 3px color-mix(in srgb, var(--accent-crimson) 90%, transparent); }
}
@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* 壳：对齐全局 gc-dialog */
body.game-page .modal-content.modal--decorated.gc-dialog.mx-dialog.encounter-content,
.modal-content.modal--decorated.gc-dialog.mx-dialog.encounter-content,
.gc-dialog.mx-dialog.encounter-content,
.encounter-content.gc-dialog.mx-dialog {
    --gc-radius: var(--radius-lg);
    --gc-radius-inner: var(--radius-md);
    --gc-radius-btn: var(--radius-md);
    --enc-tier-color: var(--text-muted);
    padding: 0;
    border-radius: var(--radius-lg);
    text-align: left;
    position: relative;
    margin: auto;
    transition: border-color 0.2s ease;
}
.encounter-content[data-tier="common"] {
    --enc-tier-color: var(--text-muted);
    border-color: var(--border-color);
}
.encounter-content[data-tier="elite"] {
    --enc-tier-color: var(--text-gold, var(--accent-gold));
    border-color: color-mix(in srgb, var(--accent-gold) 42%, var(--border-color));
}
.encounter-content[data-tier="boss"] {
    --enc-tier-color: var(--text-danger, var(--accent-crimson));
    border-color: color-mix(in srgb, var(--accent-crimson) 48%, var(--border-color));
}
/* 去掉旧顶通栏色条 */
.encounter-content[data-tier="boss"]::before { display: none !important; content: none !important; }

/* 头 */
body.game-page .gc-dialog.mx-dialog > .gc-head.mx-head,
.gc-dialog.mx-dialog > .gc-head.mx-head,
.mx-head.encounter-card__head {
    position: relative;
    padding: var(--space-16) var(--space-16) var(--space-8);
    text-align: left;
    flex-shrink: 0;
    border-bottom: none;
    background: transparent;
}
.mx-head .gc-rule { margin-bottom: var(--space-10); }
.mx-head .gc-title {
    color: var(--text-gold, var(--accent-gold));
    font-size: var(--font-title);
    letter-spacing: 0.1em;
}
.encounter-content[data-tier="boss"] .mx-head .gc-title,
.encounter-content[data-tier="boss"] .gc-rule {
    color: var(--text-danger, var(--accent-crimson));
}
.encounter-content[data-tier="boss"] .gc-rule {
    background: var(--accent-crimson);
}
.mx-head__row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-10);
}
.mx-head__id { min-width: 0; flex: 1; }
.mx-name,
.encounter-monster-name {
    font-size: var(--font-heading);
    font-weight: 700;
    line-height: 1.25;
    color: var(--text-primary);
    letter-spacing: 0.04em;
    margin: 0;
    text-shadow: none;
}
.encounter-content[data-tier="boss"] .mx-name,
.encounter-content[data-tier="boss"] .encounter-monster-name {
    color: var(--text-danger, var(--accent-crimson));
    text-shadow: none;
}
.mx-realm,
.encounter-realm-row {
    margin-top: var(--space-4);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-6);
    justify-content: flex-start;
    font-size: var(--font-label);
    color: var(--text-muted);
}
.encounter-realm-row .encounter-area,
.encounter-area {
    font-size: var(--font-label);
    color: var(--text-muted);
    margin: 0;
    letter-spacing: 0.02em;
}

/* stamp / badge */
.mx-stamp,
.encounter-tier-badge,
.encounter-root-pill {
    display: inline-flex;
    align-items: center;
    padding: var(--space-2) var(--space-8);
    border-radius: var(--radius-pill);
    border: 1px solid var(--border-color);
    font-size: var(--font-caption);
    font-weight: 600;
    letter-spacing: 0.06em;
    color: var(--text-muted);
    line-height: 1.4;
    flex: none;
    margin: 0;
    background: transparent;
    gap: 0;
}
.encounter-tier-badge::before { display: none; content: none; }
.encounter-tier-badge.mx-stamp--elite,
.mx-stamp--elite {
    color: var(--text-gold);
    border-color: color-mix(in srgb, var(--accent-gold) 42%, transparent);
    background: color-mix(in srgb, var(--accent-gold) 10%, transparent);
}
.encounter-tier-badge.mx-stamp--boss,
.mx-stamp--boss {
    color: var(--text-danger, var(--accent-crimson));
    border-color: color-mix(in srgb, var(--accent-crimson) 42%, transparent);
    background: color-mix(in srgb, var(--accent-crimson) 10%, transparent);
}
.encounter-root-pill,
.mx-stamp--root {
    color: var(--mx-root, var(--text-jade, var(--accent-jade)));
    border-color: color-mix(in srgb, var(--mx-root, var(--accent-jade)) 40%, transparent);
    background: color-mix(in srgb, var(--mx-root, var(--accent-jade)) 10%, transparent);
}

/* mid */
body.game-page .gc-dialog.mx-dialog > .gc-mid.mx-mid,
.gc-dialog.mx-dialog > .gc-mid.mx-mid,
.mx-mid {
    display: flex;
    flex-direction: column;
    gap: var(--space-10);
    flex: 1 1 auto;
    min-height: 0;
    padding: var(--space-4) var(--space-14) max(var(--space-16), env(safe-area-inset-bottom, 0px));
    max-height: min(72vh, 620px);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    text-align: left;
    white-space: normal;
}

/* archetype 卡 */
.mx-arch,
.encounter-archetype {
    flex-shrink: 0;
    border-radius: var(--gc-radius-inner, var(--radius-md));
    border: 1px solid var(--border-color);
    background: var(--bg-panel, var(--bg-card));
    overflow: hidden;
    border-bottom: 1px solid var(--border-color);
}
.mx-arch__btn,
.encounter-archetype__trigger {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-8);
    padding: var(--space-10) var(--space-12);
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    font-family: inherit;
    cursor: pointer;
    text-align: left;
    -webkit-appearance: none;
    appearance: none;
    transition: background 0.12s ease;
}
.mx-arch__btn:hover,
.encounter-archetype__trigger:hover {
    background: color-mix(in srgb, var(--accent-gold) 6%, transparent);
}
.mx-arch__left,
.encounter-archetype__tag-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-6);
    min-width: 0;
}
.mx-arch__tag,
.encounter-archetype__tag {
    display: inline-flex;
    align-items: center;
    padding: var(--space-2) var(--space-8);
    border-radius: var(--radius-pill);
    border: 1px solid color-mix(in srgb, var(--enc-tier-color, var(--accent-gold)) 35%, transparent);
    color: var(--enc-tier-color, var(--text-gold));
    font-size: var(--font-caption);
    font-weight: 700;
    letter-spacing: 0.06em;
    background: color-mix(in srgb, var(--enc-tier-color, var(--accent-gold)) 10%, transparent);
    flex-shrink: 0;
}
.encounter-archetype__tag::before { display: none; content: none; }
.mx-arch__label,
.encounter-archetype__label {
    font-size: var(--font-label);
    color: var(--text-secondary);
    letter-spacing: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.mx-arch__chev,
.encounter-archetype__chevron {
    flex: none;
    color: var(--text-muted);
    opacity: 0.85;
}
.encounter-archetype.is-open .mx-arch__chev,
.encounter-archetype.is-open .encounter-archetype__chevron {
    transform: rotate(180deg);
}
.mx-arch__detail,
.encounter-archetype__detail {
    display: none;
    max-height: none;
    overflow: visible;
    padding: 0 var(--space-12) var(--space-10);
    border-top: 1px solid color-mix(in srgb, var(--border-color) 70%, transparent);
}
.encounter-archetype.is-open .mx-arch__detail,
.encounter-archetype.is-open .encounter-archetype__detail {
    display: block;
    max-height: none;
}
.mx-arch__desc,
.encounter-archetype__desc {
    margin: var(--space-8) 0 var(--space-6);
    padding: 0;
    font-size: var(--font-caption);
    line-height: 1.55;
    color: var(--text-muted);
    font-style: normal;
}
.mx-arch__traits,
.encounter-archetype__traits {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-6);
    padding: 0;
}
.encounter-archetype__trait {
    font-size: var(--font-caption);
    padding: var(--space-2) var(--space-8);
    border-radius: var(--radius-pill);
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
    letter-spacing: 0;
    white-space: nowrap;
    background: transparent;
}
.encounter-archetype__trait--up {
    color: var(--text-jade, var(--accent-jade));
    border-color: color-mix(in srgb, var(--accent-jade) 35%, transparent);
    background: color-mix(in srgb, var(--accent-jade) 8%, transparent);
}
.encounter-archetype__trait--down {
    color: var(--text-danger, var(--accent-crimson));
    border-color: color-mix(in srgb, var(--accent-crimson) 32%, transparent);
    background: color-mix(in srgb, var(--accent-crimson) 7%, transparent);
}
.encounter-archetype__trait--neutral {
    color: var(--text-muted);
    background: transparent;
}

/* 属性卡 */
.mx-card,
.encounter-stats {
    flex-shrink: 0;
    padding: var(--space-10) var(--space-12);
    border-radius: var(--gc-radius-inner, var(--radius-md));
    border: 1px solid var(--border-color);
    background: var(--bg-panel, var(--bg-card));
    display: flex;
    flex-direction: column;
    gap: 0;
}
.mx-card__lab {
    font-size: var(--font-micro);
    font-weight: 600;
    letter-spacing: 0.1em;
    color: var(--text-muted);
    margin-bottom: var(--space-6);
}
.mx-stat,
.encounter-stat-row {
    display: grid;
    grid-template-columns: 28px 1fr auto;
    gap: var(--space-8);
    align-items: center;
    margin-top: var(--space-6);
}
.mx-stat:first-of-type,
.encounter-stats .encounter-stat-row:first-of-type { margin-top: 0; }
.mx-stat__k,
.encounter-stat-row__label {
    font-size: var(--font-caption);
    color: var(--text-muted);
    letter-spacing: 0;
}
.mx-stat__bar,
.encounter-stat-row__bar {
    height: 6px;
    border-radius: var(--radius-pill);
    background: var(--border-color);
    overflow: hidden;
    position: relative;
}
.mx-stat__fill,
.encounter-stat-row__bar-fill {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: var(--accent-gold);
    min-width: 0;
    width: 0;
    opacity: 1;
    transition: width 0.35s ease;
}
.mx-stat__fill.is-hp,
#encounterHpBar { background: var(--accent-crimson); }
.mx-stat__fill.is-atk,
#encounterAtkBar { background: var(--accent-gold); }
.mx-stat__fill.is-def,
#encounterDefBar { background: var(--accent-jade); }
.mx-stat__v,
.encounter-stat-row__value {
    font-size: var(--font-label);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--text-primary);
    min-width: 2.5em;
    text-align: right;
}
.encounter-stat-row__value--danger { color: var(--text-danger, var(--accent-crimson)); }
.encounter-stat-row__value--warn { color: var(--text-orange, var(--accent-orange, #9a6b3d)); }
.encounter-stat-row__value--safe { color: var(--text-jade); }

/* 战力 */
.mx-power,
.encounter-power {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    gap: var(--space-8);
    align-items: center;
    padding: var(--space-12) var(--space-12);
    border-radius: var(--gc-radius-inner, var(--radius-md));
    border: 1px solid var(--border-color);
    background: var(--bg-panel, var(--bg-card));
    flex-shrink: 0;
}
.mx-power__side,
.encounter-power__group {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}
.mx-power__side:first-child,
.encounter-power__group:first-child { text-align: left; }
.mx-power__side:last-child,
.encounter-power__group:last-child { text-align: right; }
.mx-power__k,
.encounter-power__label {
    font-size: var(--font-micro);
    letter-spacing: 0.06em;
    color: var(--text-muted);
}
.mx-power__v,
.encounter-power__value {
    font-size: var(--font-heading);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--text-gold, var(--accent-gold));
    line-height: 1.15;
}
.mx-power__v.is-monster,
.encounter-power__value--monster {
    color: var(--text-danger, var(--accent-crimson));
}
.mx-power__vs,
.encounter-power__vs {
    font-size: var(--font-caption);
    font-weight: 700;
    letter-spacing: 0.08em;
    color: var(--text-muted);
    padding: 0;
}

.mx-assess,
.encounter-assessment {
    margin: 0;
    padding: 0;
    font-size: var(--font-label);
    line-height: 1.5;
    font-weight: 600;
    text-align: center;
    flex-shrink: 0;
    min-height: 0;
    letter-spacing: 0;
    border: none;
}
.encounter-assessment.safe,
.mx-assess.is-safe { color: var(--text-jade); }
.encounter-assessment.warn,
.mx-assess.is-warn { color: var(--accent-orange, #9a6b3d); }
.encounter-assessment.danger,
.mx-assess.is-danger { color: var(--text-danger, var(--accent-crimson)); }
.encounter-assessment.neutral { color: var(--text-muted); }

/* #10333：道友自己的攻防短行——弱化一号，不与威胁评估抢眼 */
.encounter-player-atkdef {
    font-weight: 400;
    font-size: var(--font-caption);
    color: var(--text-muted);
    opacity: 0.85;
}

.mx-meta,
.encounter-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-6) var(--space-10);
    font-size: var(--font-caption);
    color: var(--text-muted);
    flex-shrink: 0;
    padding: 0 var(--space-2);
    border: none;
    letter-spacing: 0;
}
.encounter-meta__flee {
    color: var(--text-muted);
}
.encounter-meta__flee b,
#encounterFleeChance {
    color: var(--text-gold, var(--accent-gold));
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

/* 本命超限 */
.mx-overdrive,
.encounter-overdrive {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-10);
    margin: 0;
    padding: var(--space-10) var(--space-12);
    border-radius: var(--gc-radius-inner, var(--radius-md));
    border: 1px solid color-mix(in srgb, var(--accent-gold) 28%, var(--border-color));
    background: color-mix(in srgb, var(--accent-gold) 7%, transparent);
    flex-shrink: 0;
    text-align: left;
}
.mx-overdrive__copy,
.encounter-overdrive-copy {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}
.encounter-overdrive-copy b {
    color: var(--text-gold);
    font-size: var(--font-label);
    line-height: 1.35;
}
.encounter-overdrive-copy span {
    color: var(--text-muted);
    font-size: var(--font-caption);
    line-height: 1.4;
}
.encounter-overdrive-switch { flex-shrink: 0; }

/* 动作 */
.mx-actions,
.encounter-actions {
    display: flex;
    flex-direction: column;
    gap: var(--space-8);
    flex-shrink: 0;
    padding: 0;
}
.mx-actions__primary,
.encounter-actions__primary {
    display: grid;
    grid-template-columns: 1.35fr 1fr;
    gap: var(--space-8);
}
.mx-actions__secondary,
.encounter-actions__secondary {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-6);
    padding-top: 0;
    border-top: none;
    margin-top: 0;
}

/* 钮：全局 modal-btn + 兼容旧 class */
body.game-page .gc-dialog.mx-dialog .modal-btn,
.gc-dialog.mx-dialog .modal-btn,
.encounter-content .modal-btn {
    border-radius: var(--gc-radius-btn, var(--radius-md));
}
.encounter-content .mx-actions__primary .modal-btn,
.encounter-content .encounter-actions__primary .modal-btn,
.encounter-content .encounter-actions__primary .btn-encounter {
    min-height: 42px;
    height: auto;
    font-weight: 700;
    letter-spacing: 0.06em;
}
.encounter-content .mx-actions__secondary .modal-btn,
.encounter-content .encounter-actions__secondary .modal-btn,
.encounter-content .encounter-actions__secondary .btn-encounter {
    min-height: 36px;
    height: auto;
    font-size: var(--font-label);
    padding: 0 var(--space-8);
    letter-spacing: 0.04em;
}

/* 旧 btn-encounter 映射到扁平语义（若无 modal-btn 类时兜底） */
.btn-encounter {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    border: 1px solid var(--border-color);
    border-radius: var(--gc-radius-btn, var(--radius-md));
    font-size: var(--font-body);
    font-weight: 600;
    cursor: pointer;
    letter-spacing: 0.06em;
    background: transparent;
    color: var(--text-secondary);
    box-shadow: none;
    filter: none;
    text-shadow: none;
    -webkit-appearance: none;
    appearance: none;
    transition: background 0.12s ease, border-color 0.12s ease, color 0.12s ease, opacity 0.12s ease;
}
.btn-encounter:hover {
    border-color: var(--border-gold, var(--border-color));
    color: var(--text-primary);
    transform: none;
    box-shadow: none;
}
.btn-encounter:active { opacity: 0.88; transform: none; }
.btn-encounter:disabled { opacity: 0.45; cursor: not-allowed; }
.btn-encounter:focus-visible {
    outline: none;
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent-gold) 35%, transparent);
}
/* 有 modal-btn 时皮交给全局（不要强制 transparent 盖掉 --danger/--outline） */
.btn-fight:not(.modal-btn) {
    background: color-mix(in srgb, var(--accent-crimson) 12%, transparent);
    color: var(--text-danger, var(--accent-crimson));
    border-color: color-mix(in srgb, var(--accent-crimson) 36%, transparent);
    font-weight: 700;
}
.encounter-content[data-tier="boss"] .btn-fight:not(.modal-btn) {
    background: color-mix(in srgb, var(--accent-crimson) 14%, transparent);
    color: var(--text-danger, var(--accent-crimson));
}
.btn-flee:not(.modal-btn) {
    color: var(--text-secondary);
}

/* mid 底：跳过 + 提示（无仅关闭底栏） */
.mx-note,
.encounter-foot {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-8);
    font-size: var(--font-caption);
    color: var(--text-muted);
    flex-shrink: 0;
    padding: 0 var(--space-2) var(--space-2);
    text-align: left;
}
.mx-skip,
.encounter-skip-toggle {
    display: inline-flex;
    align-items: center;
    gap: var(--space-6);
    cursor: pointer;
    user-select: none;
    margin: 0;
    padding: 0;
    border-radius: 0;
    font-size: var(--font-caption);
    color: var(--text-muted);
}
.encounter-skip-toggle:hover { color: var(--text-secondary); }
.encounter-skip-toggle input[type="checkbox"] {
    width: 14px;
    height: 14px;
    accent-color: var(--accent-gold);
    cursor: pointer;
    margin: 0;
}
.mx-hint,
.encounter-hint {
    margin: 0;
    font-size: var(--font-caption);
    color: var(--text-muted);
    opacity: 0.9;
    line-height: 1.4;
}

.encounter-fighting-text {
    grid-column: 1 / -1;
    width: 100%;
    text-align: center;
    font-size: var(--font-body-lg);
    color: var(--text-gold);
    letter-spacing: 0.08em;
    padding: var(--space-12) var(--space-8);
    margin: 0;
    border-radius: var(--gc-radius-inner, var(--radius-md));
    border: 1px dashed var(--border-color);
    margin: 0;
    text-align: center;
    animation: encounterFightPulse 1.2s ease-in-out infinite;
}

@keyframes encounterFightPulse {
    0%, 100% { opacity: 0.6; }
    50% { opacity: 1; }
}

/* ============================================================ */
/* ===== 悬赏求助弹窗 #assistDialog（已迁 gc-dialog gold 壳） ===== */
/* 旧 .assist-modal 自定义壳 / .assist-modal-header/title/desc/ */
/* actions / .assist-btn* 已废弃（HTML 改用 gc-head/gc-mid/      */
/* gc-foot + 扁平 modal-btn），下面只保留业务分区样式。          */
/* ============================================================ */

/* 今日次数计数条（虚线胶囊，对齐 gc-mid 留白） */
.assist-modal-counts {
    margin: var(--space-4) 0 var(--space-14);
    color: var(--text-muted);
    font-size: var(--font-caption);
    letter-spacing: 1px;
    text-align: center;
    padding: var(--space-6) var(--space-10);
    border-radius: var(--radius-md);
    border: 1px dashed var(--border-color);
    background: var(--bg-glass);
}
.assist-modal-counts b { color: var(--text-gold); font-family: var(--font-mono, ui-monospace, Menlo, monospace); }

/* 当前遭遇目标卡（金边 + 金色微渐变；浅色下层次更明确） */
.assist-target-card {
    padding: var(--space-12) var(--space-14);
    border-radius: var(--radius-md);
    border: 1px solid var(--border-gold);
    background:
        linear-gradient(180deg, color-mix(in srgb, var(--accent-gold) 5%, var(--bg-card)) 0%, var(--bg-card-hover) 100%);
    margin-bottom: var(--space-14);
    text-align: center;
}
.assist-target-label {
    font-size: var(--font-micro);
    color: var(--text-muted);
    letter-spacing: 2px;
    margin-bottom: var(--space-6);
}
.assist-target-name {
    color: var(--text-gold);
    font-size: var(--font-title);
    font-weight: 700;
    margin-bottom: var(--space-4);
    font-family: var(--font-serif, "Songti SC", STSong, serif);
    letter-spacing: 1px;
}
.assist-target-meta {
    color: var(--text-secondary);
    font-size: var(--font-caption);
}

/* 悬赏比例滑块分区 */
.assist-share-block {
    padding: var(--space-12) var(--space-14);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--bg-card-hover) 88%, transparent);
    border: 1px solid var(--border-color);
}
.assist-share-header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: var(--space-12);
    margin-bottom: var(--space-10);
}
.assist-share-label {
    color: var(--text-primary);
    font-size: var(--font-body);
    font-weight: 600;
}
.assist-share-value {
    color: var(--text-gold);
    font-size: var(--font-page-title);
    font-weight: 700;
    line-height: 1;
    font-family: var(--font-mono, ui-monospace, Menlo, monospace);
    font-variant-numeric: tabular-nums;
}
.assist-share-block input[type="range"] {
    width: 100%;
    accent-color: var(--accent-gold);
    margin: var(--space-4) 0;
}
.assist-share-scale {
    display: flex;
    justify-content: space-between;
    gap: var(--space-12);
    margin-top: var(--space-6);
    color: var(--text-muted);
    font-size: var(--font-micro);
    letter-spacing: 1px;
}
.assist-share-note {
    margin: var(--space-10) 0 0;
    color: var(--text-secondary);
    font-size: var(--font-caption);
    line-height: 1.6;
    text-align: center;
}
.assist-share-note b { color: var(--text-gold); }

/* 浅色适配：覆写已被 game-dialog.css gc-dialog 接管的壳， */
/* 仅保留对业务分区与 overlay 遮罩的浅色微调。            */
html.theme-light .encounter-overlay {
    background: color-mix(in srgb, var(--ink-900, #2a2520) 35%, transparent);
    backdrop-filter: blur(4px);
}
html.theme-light .encounter-content {
    box-shadow: var(--shadow-md), 0 0 24px color-mix(in srgb, var(--accent-crimson) 8%, transparent);
}
html.theme-light #assistDialog {
    background: color-mix(in srgb, var(--bg-card) 78%, transparent);
    backdrop-filter: blur(5px);
}

/* ===== 魂魄飘散：全屏状态页（非弹窗） ===== */
.death-overlay {
    --death-bg: #0e1216;
    --death-bg-deep: #0a0d10;
    --death-line: color-mix(in srgb, var(--text-secondary, var(--text-secondary)) 18%, transparent);
    --death-line-soft: color-mix(in srgb, var(--text-secondary, var(--text-secondary)) 10%, transparent);
    --death-text: var(--text-primary, var(--text-primary));
    --death-text-2: var(--text-secondary, var(--text-secondary));
    --death-text-3: var(--text-muted, var(--text-muted));
    --death-gold: var(--text-gold, var(--accent-gold));
    --death-jade: var(--accent-jade, var(--text-jade));
    --death-red: var(--text-red, var(--text-red));
    --death-orange: var(--accent-orange, #b98b64);
    --death-veil-a: color-mix(in srgb, var(--death-red) 12%, transparent);
    --death-veil-b: color-mix(in srgb, var(--death-jade) 8%, transparent);
    --death-mist: color-mix(in srgb, var(--death-text) 5%, transparent);
    --death-btn-jade-bg: color-mix(in srgb, var(--death-jade) 16%, transparent);
    --death-btn-jade-bd: color-mix(in srgb, var(--death-jade) 42%, transparent);
    --death-btn-orange-bg: color-mix(in srgb, var(--death-orange) 12%, transparent);
    --death-btn-orange-bd: color-mix(in srgb, var(--death-orange) 36%, transparent);
    --death-btn-outline-bd: color-mix(in srgb, var(--death-text-2) 22%, transparent);
    --death-input-bg: rgba(0, 0, 0, 0.28);
    --death-battle-line: color-mix(in srgb, var(--death-red) 28%, transparent);

    position: fixed;
    inset: 0;
    /* 须高于侧栏(.side-panel=1001)，否则秘境结果页会挡住引渡按钮导致“无法复活” */
    z-index: 1300;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    background:
        radial-gradient(ellipse 90% 50% at 50% 18%, var(--death-veil-a), transparent 58%),
        radial-gradient(ellipse 80% 45% at 50% 92%, var(--death-veil-b), transparent 50%),
        linear-gradient(180deg, var(--death-bg) 0%, var(--death-bg-deep) 100%);
    color: var(--death-text);
    display: block;
    padding: 0;
    backdrop-filter: none;
}
.death-overlay::-webkit-scrollbar { display: none; width: 0; height: 0; }

.death-overlay::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    background-image:
        radial-gradient(circle at 12% 22%, var(--death-mist) 0 1px, transparent 2px),
        radial-gradient(circle at 68% 14%, var(--death-mist) 0 1.2px, transparent 2.2px),
        radial-gradient(circle at 84% 38%, var(--death-mist) 0 1px, transparent 2px),
        radial-gradient(circle at 28% 48%, var(--death-mist) 0 1px, transparent 2px),
        radial-gradient(circle at 52% 62%, var(--death-mist) 0 1.4px, transparent 2.4px),
        radial-gradient(circle at 18% 78%, var(--death-mist) 0 1px, transparent 2px),
        radial-gradient(circle at 76% 84%, var(--death-mist) 0 1px, transparent 2px);
    opacity: 0.95;
}

.death-page {
    position: relative;
    z-index: 1;
    min-height: 100%;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
}

.death-inner {
    flex: 1;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 400px;
    margin: 0 auto;
    padding: var(--space-48) var(--space-24) var(--space-32);
    padding-top: max(var(--space-48), env(safe-area-inset-top, 0px));
    padding-bottom: max(var(--space-32), env(safe-area-inset-bottom, 0px));
    box-sizing: border-box;
}

.death-hero {
    text-align: center;
    padding: var(--space-8) 0 var(--space-32);
    flex-shrink: 0;
}
.death-hero__mark {
    width: 28px;
    height: 1px;
    margin: 0 auto var(--space-20);
    background: var(--death-red);
    opacity: 0.75;
}
.death-hero__title {
    font-family: var(--font-display, "Kaiti SC", "STKaiti", serif);
    font-size: var(--font-hero);
    letter-spacing: 8px;
    font-weight: 500;
    color: var(--death-red);
    line-height: 1.2;
    text-indent: 8px;
    margin: 0;
    text-shadow: none;
}
.death-hero__sub {
    margin: var(--space-14) auto 0;
    font-size: var(--font-body);
    line-height: 1.7;
    color: var(--death-text-2);
    letter-spacing: 0.5px;
    max-width: 18em;
    text-wrap: wrap;
}

.death-body {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    gap: 0;
    min-height: 0;
}

.death-block {
    padding: var(--space-14) 0;
    border-top: 1px solid var(--death-line-soft);
    text-align: left;
}
/* 无「最后一战」时，引渡区顶线去掉（.hidden 仍占 DOM 首子） */
.death-block:first-child,
.death-last-battle.hidden + .death-block {
    border-top: 0;
    padding-top: 0;
}
.death-block__label {
    font-size: var(--font-micro);
    letter-spacing: 2px;
    color: var(--death-text-3);
    margin-bottom: var(--space-8);
}

/* 最后一战 */
.death-last-battle {
    color: var(--death-text-2);
    font-size: var(--font-body);
    line-height: 1.5;
    background: none;
    border: 0;
    border-radius: 0;
    margin: 0;
    padding: var(--space-14) 0;
}
.death-last-battle.hidden { display: none; }

.death-last-battle__name {
    font-family: var(--font-serif, "Songti SC", serif);
    font-size: var(--font-body-lg);
    font-weight: 600;
    letter-spacing: 1px;
    color: var(--death-text);
    margin-bottom: var(--space-4);
}
.death-last-battle__meta {
    color: var(--death-text-3);
    font-size: var(--font-caption);
    margin-bottom: var(--space-10);
}
.death-last-battle__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-6) var(--space-14);
    margin-bottom: var(--space-10);
    font-size: var(--font-label);
    color: var(--death-text-2);
}
.death-last-battle__grid span { min-width: 0; }
.death-last-battle__grid b {
    color: var(--death-gold);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    font-family: var(--font-mono, ui-monospace, Menlo, monospace);
    font-size: var(--font-label);
}
.death-last-battle__assessment {
    color: var(--death-text-2);
    font-size: var(--font-label);
    line-height: 1.6;
    border-top: 1px dashed var(--death-battle-line);
    padding-top: var(--space-8);
    text-wrap: wrap;
}
.death-last-battle__assessment > div + div { margin-top: var(--space-4); }

.death-last-battle__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-10);
    margin-top: var(--space-10);
    padding-top: 0;
    border-top: 0;
}
.death-last-battle__actions span {
    flex: 1 1 auto;
    color: var(--death-text-3);
    font-size: var(--font-caption);
}
.death-last-battle__actions--pending { opacity: 0.82; }

.death-last-battle__report-btn {
    flex: 0 0 auto;
    border: 0;
    background: none;
    padding: 0;
    min-height: 0;
    font-size: var(--font-label);
    color: var(--death-red);
    letter-spacing: 0.5px;
    cursor: pointer;
    font-family: inherit;
    text-decoration: underline;
    text-underline-offset: 3px;
    text-decoration-color: color-mix(in srgb, var(--death-red) 35%, transparent);
}
.death-last-battle__report-btn:hover:not(:disabled) {
    text-decoration-color: var(--death-red);
    background: none;
    border: 0;
}
.death-last-battle__report-btn:disabled {
    cursor: default;
    opacity: 0.68;
    text-decoration: none;
}

/* 引渡代价 */
.death-cost {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--space-12);
    padding: var(--space-4) 0 0;
    margin: 0;
    font-size: inherit;
    color: inherit;
}
.death-cost__k {
    font-size: var(--font-label);
    color: var(--death-text-3);
    letter-spacing: 1px;
}
.death-cost__v {
    font-family: var(--font-mono, ui-monospace, Menlo, monospace);
    font-size: var(--font-action);
    font-weight: 700;
    color: var(--death-gold);
    font-variant-numeric: tabular-nums;
    text-align: right;
}
.death-cost__v small {
    display: block;
    margin-top: var(--space-2);
    font-size: var(--font-micro);
    font-weight: 500;
    color: var(--death-text-3);
    font-family: inherit;
}
.death-cost__v small:empty { display: none; }

.death-cta {
    display: flex;
    flex-direction: column;
    gap: var(--space-8);
    padding-top: var(--space-12);
}
.death-cta__hint {
    font-size: var(--font-caption);
    color: var(--death-text-3);
    text-align: center;
    line-height: 1.45;
    margin: 0;
}
.death-cta.hidden,
.death-cost.hidden { display: none; }

.death-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 42px;
    border-radius: var(--radius-md);
    font-size: var(--font-body-lg);
    letter-spacing: 2px;
    font-family: inherit;
    font-weight: 600;
    cursor: pointer;
    border: 1px solid transparent;
    -webkit-appearance: none;
    appearance: none;
    background: transparent;
    transition: opacity 0.15s, border-color 0.15s, background 0.15s;
    box-sizing: border-box;
}
.death-btn:disabled {
    opacity: 0.55;
    cursor: default;
}
.death-btn--primary {
    background: var(--death-btn-jade-bg);
    border-color: var(--death-btn-jade-bd);
    color: var(--death-jade);
}
.death-btn--primary:hover:not(:disabled) {
    background: color-mix(in srgb, var(--death-jade) 22%, transparent);
}
.death-btn--secondary {
    background: var(--death-btn-orange-bg);
    border-color: var(--death-btn-orange-bd);
    color: var(--death-orange);
    font-weight: 500;
    height: 38px;
    font-size: var(--font-body);
    letter-spacing: 1.5px;
}
.death-btn--secondary:hover:not(:disabled) {
    background: color-mix(in srgb, var(--death-orange) 18%, transparent);
}
.death-btn--ghost {
    background: transparent;
    border-color: var(--death-btn-outline-bd);
    color: var(--death-text-2);
    font-weight: 500;
    height: 36px;
    font-size: var(--font-label);
    letter-spacing: 2px;
}
.death-btn--ghost:hover:not(:disabled) {
    border-color: color-mix(in srgb, var(--death-text-2) 36%, transparent);
    color: var(--death-text);
}
.death-btn--sm {
    width: auto;
    min-width: 96px;
    height: 32px;
    padding: 0 var(--space-14);
    font-size: var(--font-label);
    letter-spacing: 1px;
    flex-shrink: 0;
}

.death-guest-hint {
    color: var(--death-gold);
    font-size: var(--font-label);
    margin-top: var(--space-12);
    line-height: 1.6;
    text-align: center;
    text-wrap: wrap;
}
.death-guest-hint.hidden { display: none; }

/* 遗言 */
.death-words__title {
    font-family: var(--font-serif, "Songti SC", serif);
    font-size: var(--font-body);
    letter-spacing: 2px;
    color: var(--death-gold);
    font-weight: 600;
    margin-bottom: var(--space-6);
}
.death-words__hint {
    font-size: var(--font-caption);
    line-height: 1.6;
    color: var(--death-text-3);
    margin: 0 0 var(--space-8);
    text-wrap: wrap;
}
.death-words__input {
    width: 100%;
    min-height: 64px;
    resize: none;
    box-sizing: border-box;
    padding: var(--space-10) var(--space-12);
    border-radius: var(--radius-md);
    border: 1px solid var(--death-line);
    background: var(--death-input-bg);
    color: var(--death-text);
    font-size: var(--font-body);
    line-height: 1.55;
    font-family: inherit;
}
.death-words__input::placeholder {
    color: var(--death-text-3);
    opacity: 0.8;
}
.death-words__input:focus {
    outline: none;
    border-color: color-mix(in srgb, var(--death-jade) 40%, transparent);
}
.death-words__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-10);
    margin-top: var(--space-8);
}
.death-words__count {
    font-size: var(--font-caption);
    color: var(--death-text-3);
}
.death-words__count.is-ok {
    color: var(--death-jade);
}
.death-words.hidden { display: none; }

/* 底栏：储物 / 道友 / 挂牌（#6660 陨落时仍须能取消挂牌） */
.death-footer {
    flex-shrink: 0;
    margin-top: auto;
    padding-top: var(--space-20);
    border-top: 1px solid var(--death-line-soft);
}
.death-footer__links {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-10);
}
.death-footer__links .death-btn {
    flex: 1 1 calc(50% - var(--space-10));
    min-width: 0;
}

/* ===== 奇遇链 · 仅域内补充（壳/钮/字号一律吃全局 gc-dialog + modal-btn） ===== */
/* overlay：复用 .modal-overlay 基线；此类只做业务标识，不重写 position/z-index */
.adventure-overlay.hidden { display: none !important; }

/* 宽度/圆角与全局 gc-dialog 一致（392 / 14 / 10 / 8） */
body.game-page .modal-content.modal--decorated.gc-dialog.adv-dialog,
.modal-content.modal--decorated.gc-dialog.adv-dialog,
.gc-dialog.adv-dialog {
    max-width: 392px;
    width: 90%;
    animation: announceSlideIn 0.28s ease;
}

/* 头：沿用 .gc-head 留白；步骤 chip 占右上（同 modal-header-close 位） */
body.game-page .gc-dialog.adv-dialog > .gc-head.adv-head,
.gc-dialog.adv-dialog > .gc-head.adv-head,
.adv-head {
    position: relative;
    padding: var(--space-20) 72px 0 var(--space-20);
    text-align: left;
}
.adv-head .gc-title {
    color: var(--text-gold, var(--accent-gold));
}
.adv-step-chip {
    position: absolute;
    top: 16px;
    right: 16px;
    display: inline-flex;
    align-items: center;
    padding: var(--space-2) var(--space-10);
    border-radius: var(--radius-pill);
    border: 1px solid var(--border-gold, var(--border-color));
    background: var(--gradient-gold, rgba(183, 120, 31, 0.10));
    color: var(--text-gold, var(--accent-gold));
    font-size: var(--font-caption);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.04em;
    line-height: 1.4;
}
.adv-step-chip[hidden] { display: none !important; }

/* mid：压过 .gc-mid 居中限高，左齐表单感 + 安全底 */
body.game-page .gc-dialog.adv-dialog > .gc-mid.adv-mid,
.gc-dialog.adv-dialog > .gc-mid.adv-mid,
.adv-mid {
    display: flex;
    flex-direction: column;
    gap: var(--space-12);
    flex: 1 1 auto;
    min-height: 0;
    padding: var(--space-14) var(--space-20) max(var(--space-16), env(safe-area-inset-bottom, 0px));
    max-height: min(62vh, 480px);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    text-align: left;
    white-space: normal;
}

.adv-progress {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: var(--space-8);
    flex-shrink: 0;
}
.adventure-dot {
    width: 8px;
    height: 8px;
    border-radius: var(--radius-pill);
    background: var(--border-color);
    transition: background 0.2s ease, box-shadow 0.2s ease;
    flex: none;
}
.adventure-dot.active {
    background: var(--accent-gold);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent-gold) 16%, transparent);
}
.adventure-dot.done {
    background: var(--accent-jade, var(--text-jade));
}

.adv-narrative.gc-body {
    flex-shrink: 0;
    margin: 0;
    min-height: 64px;
    padding: var(--space-12) var(--space-14);
    text-align: left;
    font-size: var(--font-body-lg);
    line-height: 1.75;
    color: var(--text-primary);
    background: var(--bg-panel, var(--bg-card));
    border-radius: var(--gc-radius-inner, var(--radius-md));
    border: 1px solid var(--border-color);
    white-space: pre-wrap;
    word-break: break-word;
    max-height: none;
}

.adv-choices {
    display: flex;
    flex-direction: column;
    gap: var(--space-8);
    flex-shrink: 0;
}

/* 弹窗内按钮统一吃 --gc-radius-btn（与 .gc-foot > .modal-btn 一致） */
body.game-page .gc-dialog.adv-dialog .modal-btn,
.gc-dialog.adv-dialog .modal-btn {
    border-radius: var(--gc-radius-btn, var(--radius-md));
}

/* 选项 = 全局 modal-btn--outline--full，仅改为左齐多行 */
body.game-page .adv-dialog .modal-btn.adventure-choice-btn,
.adv-dialog .modal-btn.adventure-choice-btn,
.adventure-choice-btn.modal-btn {
    width: 100%;
    height: auto;
    min-height: 40px;
    padding: var(--space-10) var(--space-14);
    justify-content: flex-start;
    text-align: left;
    white-space: normal;
    line-height: 1.45;
}
body.game-page .adv-dialog .modal-btn.adventure-choice-btn:disabled,
.adventure-choice-btn.modal-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

/* 奖励：复用 gc-detail 语言 */
.adventure-reward.gc-detail,
.adventure-reward {
    flex-shrink: 0;
    margin: 0;
    padding: var(--space-10) var(--space-12);
    border-radius: var(--gc-radius-inner, var(--radius-md));
    border: 1px solid var(--border-gold, var(--border-color));
    background: var(--bg-panel, var(--bg-card));
    text-align: left;
}
.adventure-reward__lab,
.adventure-reward .gc-detail__k {
    display: block;
    font-size: var(--font-micro);
    letter-spacing: 1px;
    color: var(--text-muted);
    margin-bottom: var(--space-4);
}
.adventure-reward-text,
.adventure-reward .gc-detail__v {
    margin: 0;
    color: var(--text-gold, var(--accent-gold));
    font-family: var(--font-mono, ui-monospace, Menlo, monospace);
    font-size: var(--font-body-lg);
    font-weight: 700;
    line-height: 1.55;
    font-variant-numeric: tabular-nums;
}

/* 结束 / 加载：纯用 modal-btn / gc-note，不另开皮 */
.adventure-loading.gc-note,
.adventure-loading {
    margin: 0;
    padding: var(--space-12);
    text-align: center;
    font-size: var(--font-label);
    line-height: 1.55;
    color: var(--text-muted);
    letter-spacing: 0.06em;
    border-radius: var(--gc-radius-inner, var(--radius-md));
    border: 1px dashed var(--border-color);
    background: transparent;
}

@supports not (background: color-mix(in srgb, white 50%, black)) {
    .adventure-dot.active { box-shadow: none; }
}

@media (max-width: 640px) {
    .adventure-overlay.modal-overlay {
        align-items: flex-start;
    }
    .adventure-overlay .adv-dialog {
        margin-block: auto;
    }
}

/* #5775：逮捕弹窗样式已删除 */


/* ============================================================ */
/* ===== 护道玉牌卡（遭遇战护道弹窗 encounterProtectorDialog） ===== */
/* ============================================================ */
#encounterProtectorList { gap: var(--space-8); }

.protector-card {
    position: relative;
    border: 1px solid var(--border-gold);
    border-radius: var(--radius-md);
    padding: var(--space-8) var(--space-12) var(--space-8);
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--accent-jade) 4%, transparent) 0%, transparent 45%, color-mix(in srgb, var(--craft-gold) 5%, transparent) 100%),
        var(--bg-glass);
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb, var(--craft-gold) 5%, transparent),
        inset 0 1px 0 color-mix(in srgb, var(--craft-gold-soft) 4%, transparent),
        0 2px 6px var(--shadow-black-2);
    transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s;
}
.protector-card:hover {
    border-color: color-mix(in srgb, var(--craft-gold) 50%, transparent);
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb, var(--craft-gold) 15%, transparent),
        inset 0 1px 0 color-mix(in srgb, var(--craft-gold-soft) 6%, transparent),
        0 4px 14px color-mix(in srgb, var(--craft-gold) 10%, transparent);
    transform: translateY(-1px);
}
/* 玉牌左上 / 右下 云纹角饰 */
.protector-card::before,
.protector-card::after {
    content: '';
    position: absolute;
    width: 12px;
    height: 12px;
    border: solid color-mix(in srgb, var(--craft-gold) 50%, transparent);
    pointer-events: none;
    transition: border-color 0.2s;
}
.protector-card::before {
    top: 3px; left: 3px;
    border-width: 1px 0 0 1px;
    width: 10px; height: 10px;
}
.protector-card::after {
    bottom: 3px; right: 3px;
    border-width: 0 1px 1px 0;
    width: 10px; height: 10px;
}
.protector-card:hover::before,
.protector-card:hover::after {
    border-color: color-mix(in srgb, var(--craft-gold) 85%, transparent);
}

.protector-card--mute {
    opacity: 0.55;
    filter: grayscale(0.35);
}
.protector-card--mute:hover { transform: none; }

/* 师父金卡（本体 / 化身护道） */
.protector-card--master {
    border-color: color-mix(in srgb, var(--combat-damage) 50%, transparent);
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--combat-damage) 12%, transparent) 0%, color-mix(in srgb, var(--craft-gold-bright) 4%, transparent) 50%, var(--shadow-black-3) 100%),
        var(--bg-glass);
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb, var(--combat-damage) 12%, transparent),
        inset 0 1px 0 color-mix(in srgb, var(--craft-gold-soft) 8%, transparent),
        0 0 10px color-mix(in srgb, var(--combat-damage) 6%, transparent),
        0 2px 6px var(--shadow-black-2);
}
.protector-card--master.protector-card--mute {
    opacity: 1;
    filter: grayscale(0.12);
}
.protector-card--master::before,
.protector-card--master::after {
    border-color: color-mix(in srgb, var(--combat-damage) 75%, transparent);
    width: 14px;
    height: 14px;
}
.protector-card--master:hover {
    border-color: color-mix(in srgb, var(--combat-damage) 80%, transparent);
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb, var(--combat-damage) 20%, transparent),
        inset 0 1px 0 color-mix(in srgb, var(--craft-gold-soft) 12%, transparent),
        0 0 14px color-mix(in srgb, var(--combat-damage) 16%, transparent),
        0 4px 12px var(--shadow-black-2);
}

.protector-card--friend {
    border-color: color-mix(in srgb, var(--accent-jade) 48%, transparent);
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--accent-jade) 13%, transparent) 0%, color-mix(in srgb, var(--accent-blue) 6%, transparent) 55%, var(--shadow-black-3) 100%),
        var(--bg-glass);
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb, var(--accent-jade) 12%, transparent),
        inset 0 1px 0 color-mix(in srgb, var(--bg-secondary) 6%, transparent),
        0 2px 6px var(--shadow-black-2);
}

.protector-card--friend::before,
.protector-card--friend::after {
    border-color: color-mix(in srgb, var(--accent-jade) 72%, transparent);
}

/* 道侣护道卡：复用好友护道视觉（同属免费·非雇佣），略偏金色暖调 */
.protector-card--partner {
    border-color: color-mix(in srgb, var(--accent-gold) 45%, transparent);
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--accent-gold) 12%, transparent) 0%, color-mix(in srgb, var(--accent-jade) 8%, transparent) 55%, var(--shadow-black-3) 100%),
        var(--bg-glass);
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb, var(--accent-gold) 12%, transparent),
        0 2px 6px var(--shadow-black-2);
}
.protector-card--partner::before,
.protector-card--partner::after {
    border-color: color-mix(in srgb, var(--accent-gold) 65%, transparent);
}

.prot-head--friend {
    justify-content: space-between;
    padding-right: 0;
    margin-bottom: var(--space-4);
}

/* 头部名号行 */
.prot-head {
    display: flex;
    align-items: center;
    gap: var(--space-6);
    flex-wrap: wrap;
    padding-right: var(--space-24);
    margin-bottom: 0;
    min-height: 18px;
}
.prot-head--master {
    justify-content: space-between;
    padding-right: 0;
    margin-bottom: var(--space-4);
}
.prot-name {
    font-weight: bold;
    font-size: var(--font-action);
    color: var(--text-primary);
}
.prot-realm {
    font-size: var(--font-label);
    color: var(--accent-jade);
    letter-spacing: 1px;
}

/* 印章式徽章 */
.prot-badge {
    font-size: var(--font-micro);
    padding: var(--space-2) var(--space-8);
    border-radius: var(--radius-md);
    letter-spacing: 2px;
    border: 1px solid transparent;
}
.prot-badge--ok {
    color: var(--accent-jade);
    background: color-mix(in srgb, var(--accent-jade) 10%, transparent);
    border-color: color-mix(in srgb, var(--accent-jade) 35%, transparent);
}
.prot-badge--busy {
    color: var(--text-secondary);
    background: color-mix(in srgb, var(--text-muted) 10%, transparent);
    border-color: var(--border-color);
}

/* 师父标签 */
.prot-master-tag {
    display: inline-block;
    font-size: var(--font-micro);
    color: var(--craft-gold-soft);
    background: color-mix(in srgb, var(--combat-damage) 14%, transparent);
    padding: var(--space-2) var(--space-8);
    border-radius: var(--radius-xs);
    letter-spacing: 3px;
    border: 1px solid color-mix(in srgb, var(--combat-damage) 35%, transparent);
}
.prot-master-tag--friend {
    color: var(--accent-jade);
    background: color-mix(in srgb, var(--accent-jade) 14%, transparent);
    border-color: color-mix(in srgb, var(--accent-jade) 35%, transparent);
}
.prot-free {
    font-size: var(--font-body);
    font-weight: bold;
    color: var(--craft-gold-soft);
    letter-spacing: 5px;
    text-shadow: 0 0 6px color-mix(in srgb, var(--combat-damage) 30%, transparent);
    flex-shrink: 0;
}

/* 属性条（仅下方金色细线，砚台感） */
.prot-stats {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2) var(--space-12);
    font-size: var(--font-caption);
    color: var(--text-secondary);
    padding: var(--space-4) var(--space-2) var(--space-4);
    margin: var(--space-4) 0 var(--space-6);
    border-bottom: 1px solid color-mix(in srgb, var(--craft-gold) 14%, transparent);
}
.prot-stats b {
    color: var(--text-primary);
    font-weight: 600;
    margin-left: var(--space-2);
}
.prot-stats .prot-loc {
    color: var(--accent-gold);
    letter-spacing: 0.5px;
}

/* 师父化身属性描述 */
.prot-master-desc {
    font-size: var(--font-caption);
    color: var(--text-secondary);
    line-height: 1.5;
    padding: var(--space-4) var(--space-2) var(--space-4);
    margin: var(--space-4) 0 var(--space-6);
    border-bottom: 1px solid color-mix(in srgb, var(--combat-damage) 22%, transparent);
}
.prot-master-desc b {
    color: var(--text-primary);
    font-weight: 600;
    margin: 0 var(--space-2);
}

/* 宣纸留言（「 」包裹，单行省略） */
.prot-note {
    font-size: var(--font-caption);
    color: var(--text-secondary);
    padding: var(--space-2) var(--space-10);
    margin-bottom: var(--space-6);
    background: linear-gradient(90deg, color-mix(in srgb, var(--craft-gold) 5%, transparent), transparent);
    border-left: 2px solid color-mix(in srgb, var(--craft-gold) 30%, transparent);
    border-radius: var(--radius-xs);
    line-height: 1.5;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.prot-note::before { content: '「'; color: color-mix(in srgb, var(--craft-gold) 60%, transparent); margin-right: var(--space-2); }
.prot-note::after  { content: '」'; color: color-mix(in srgb, var(--craft-gold) 60%, transparent); margin-left: var(--space-2); }

/* 按钮 - 协同（玉色） */
.prot-btn-row {
    display: flex;
    gap: var(--space-6);
}
.prot-btn {
    flex: 1;
    padding: var(--space-6) var(--space-10);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--accent-jade) 40%, transparent);
    background: linear-gradient(180deg, color-mix(in srgb, var(--accent-jade) 14%, transparent), color-mix(in srgb, var(--accent-jade) 4%, transparent));
    color: var(--text-primary);
    font-size: var(--font-label);
    letter-spacing: 2px;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-8);
    white-space: nowrap;
    transition: background 0.18s, border-color 0.18s, box-shadow 0.18s;
    box-shadow: inset 0 1px 0 var(--glass-white-2);
}
.prot-btn:hover {
    background: linear-gradient(180deg, color-mix(in srgb, var(--accent-jade) 24%, transparent), color-mix(in srgb, var(--accent-jade) 8%, transparent));
    border-color: var(--accent-jade);
    box-shadow:
        inset 0 1px 0 var(--glass-white-1),
        0 0 10px color-mix(in srgb, var(--accent-jade) 22%, transparent);
}
.prot-btn__price {
    color: var(--accent-gold);
    font-weight: bold;
    letter-spacing: 0.5px;
}

/* 按钮 - 单独（朱砂） */
.prot-btn--solo {
    border-color: color-mix(in srgb, var(--combat-wound) 45%, transparent);
    background: linear-gradient(180deg, color-mix(in srgb, var(--combat-wound) 14%, transparent), color-mix(in srgb, var(--combat-wound) 4%, transparent));
    color: color-mix(in srgb, var(--craft-gold-soft) 50%, var(--text-muted));
}
.prot-btn--solo:hover {
    background: linear-gradient(180deg, color-mix(in srgb, var(--combat-wound) 24%, transparent), color-mix(in srgb, var(--combat-wound) 8%, transparent));
    border-color: color-mix(in srgb, var(--combat-wound) 72%, transparent);
    box-shadow:
        inset 0 1px 0 var(--glass-white-1),
        0 0 10px color-mix(in srgb, var(--combat-wound) 24%, transparent);
}
.prot-btn--solo .prot-btn__price {
    color: color-mix(in srgb, var(--craft-gold-soft) 60%, white);
}

/* 师父召唤按钮（金卡专用） */
.prot-btn-master {
    width: 100%;
    padding: var(--space-6);
    border-radius: var(--radius-sm);
    border: 1px solid color-mix(in srgb, var(--combat-damage) 55%, transparent);
    background: linear-gradient(180deg, color-mix(in srgb, var(--combat-damage) 20%, transparent), color-mix(in srgb, var(--craft-gold-bright) 6%, transparent));
    color: var(--craft-gold-soft);
    font-size: var(--font-label);
    font-weight: bold;
    letter-spacing: 5px;
    cursor: pointer;
    transition: background 0.18s, box-shadow 0.18s;
    box-shadow: inset 0 1px 0 color-mix(in srgb, var(--craft-gold-soft) 8%, transparent);
}
.prot-btn-master:hover {
    background: linear-gradient(180deg, color-mix(in srgb, var(--combat-damage) 30%, transparent), color-mix(in srgb, var(--craft-gold-bright) 10%, transparent));
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, var(--craft-gold-soft) 14%, transparent),
        0 0 14px color-mix(in srgb, var(--combat-damage) 24%, transparent);
}

.prot-btn-master--friend {
    border-color: color-mix(in srgb, var(--accent-jade) 55%, transparent);
    background: linear-gradient(180deg, color-mix(in srgb, var(--accent-jade) 22%, transparent), color-mix(in srgb, var(--accent-jade) 7%, transparent));
    color: var(--accent-jade);
}

.prot-btn-master--friend:hover {
    background: linear-gradient(180deg, color-mix(in srgb, var(--accent-jade) 32%, transparent), color-mix(in srgb, var(--accent-jade) 11%, transparent));
    box-shadow:
        inset 0 1px 0 color-mix(in srgb, var(--bg-secondary) 14%, transparent),
        0 0 14px color-mix(in srgb, var(--accent-jade) 24%, transparent);
}

.prot-master-status {
    display: inline-block;
    margin-left: var(--space-6);
    padding: var(--space-2) var(--space-6);
    border: 1px solid color-mix(in srgb, var(--combat-crit) 48%, transparent);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--accent-crimson) 16%, transparent);
    color: color-mix(in srgb, var(--danger-color) 70%, white);
    font-size: var(--font-caption);
    font-weight: bold;
    white-space: nowrap;
}

.prot-master-blocked {
    margin-top: var(--space-6);
    padding: var(--space-4) var(--space-8);
    border: 1px solid color-mix(in srgb, var(--combat-crit) 42%, transparent);
    border-radius: var(--radius-sm);
    background: color-mix(in srgb, var(--accent-crimson) 13%, transparent);
    color: color-mix(in srgb, var(--danger-color) 70%, white);
    font-size: var(--font-label);
    font-weight: bold;
}

.prot-btn-master.prot-btn-master--blocked,
.prot-btn-master.prot-btn-master--blocked:disabled {
    border-color: color-mix(in srgb, var(--combat-crit) 62%, transparent);
    background: linear-gradient(180deg, color-mix(in srgb, var(--danger-color) 24%, transparent), color-mix(in srgb, var(--accent-crimson) 10%, transparent));
    color: color-mix(in srgb, var(--danger-color) 70%, white);
    opacity: 1;
    cursor: not-allowed;
    box-shadow: inset 0 1px 0 color-mix(in srgb, var(--craft-gold-soft) 8%, transparent);
}

.prot-btn:disabled,
.prot-btn-master:disabled {
    opacity: 0.38;
    cursor: not-allowed;
    transform: none;
}
.prot-btn:disabled:hover,
.prot-btn-master:disabled:hover {
    background: inherit;
    border-color: inherit;
    box-shadow: inset 0 1px 0 var(--glass-white-2);
}

.prot-btn-master.prot-btn-master--blocked:disabled:hover {
    border-color: color-mix(in srgb, var(--combat-crit) 62%, transparent);
    background: linear-gradient(180deg, color-mix(in srgb, var(--danger-color) 24%, transparent), color-mix(in srgb, var(--accent-crimson) 10%, transparent));
    box-shadow: inset 0 1px 0 color-mix(in srgb, var(--craft-gold-soft) 8%, transparent);
}

/* 拉黑角标 */
.prot-banish {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 18px;
    height: 18px;
    line-height: 1;
    padding: 0;
    font-size: var(--font-micro);
    color: var(--text-secondary);
    background: var(--shadow-black-2);
    border: 1px solid var(--border-gold);
    border-radius: 50%;
    cursor: pointer;
    transition: color 0.15s, border-color 0.15s, background 0.15s;
    z-index: 2;
}
.prot-banish:hover {
    color: var(--danger-color);
    border-color: color-mix(in srgb, var(--accent-crimson) 55%, transparent);
    background: color-mix(in srgb, var(--accent-crimson) 15%, transparent);
}

/* 占位文字 */
.prot-empty {
    text-align: center;
    padding: var(--space-4) 0 var(--space-2);
    color: var(--text-muted);
    font-size: var(--font-caption);
    letter-spacing: 4px;
}

/* ============================================================ */
/* ===== 遭遇战辅助弹窗 · gc-dialog 迁移（临战符箓 / 雇佣护道） ===== */
/* 旧 donate-overlay / modal-body-padded 已废弃，统一 gc-dialog 壳 */
/* ============================================================ */

/* ── 弹窗壳宽度微调（对齐生产 gc-dialog 默认 392px 上限） ── */
#encounterTalismanDialog .modal-content.gc-dialog,
#encounterProtectorDialog .modal-content.gc-dialog {
    max-width: 392px;
    width: 92%;
}

/*
 * #5525 护道最后一个点不到：
 * gc-mid 与 .pt-list 同时 overflow 会双滚；列表底贴 gc-foot 时末卡「协同/单独」点不到。
 * 中区改 flex 不滚，仅 .pt-list 滚，并加底垫 + 安全区。
 */
#encounterProtectorDialog .gc-mid.pt-mid {
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden; /* 中区不滚，滚动交给 .pt-list */
    padding-bottom: var(--space-8);
}
#encounterProtectorDialog .pt-lead,
#encounterProtectorDialog .pt-toolbar {
    flex-shrink: 0;
}
#encounterProtectorDialog .pt-list {
    flex: 1 1 auto;
    min-height: 140px; /* #5535：底线高度，避免 flex 链把玉牌列表压成 0 高「卡没了」 */
    max-height: none; /* 覆盖全局 .pt-list 的 50vh，避免与中区高度打架 */
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
    /* 末卡双钮 + 安全区，滚到底后按钮完整露出（#5525） */
    padding-bottom: max(var(--space-32), calc(var(--space-16) + env(safe-area-inset-bottom, 0px)));
}
/* 注：旧 donate-overlay 已从 #encounterTalismanDialog 移除，不再需要全局覆盖；
   其它仍用 donate 壳的弹窗（如动态 showModal 施展符箓）保持原样不受影响。 */

/* ════════════════════════════════════════════════════════════
   临战符箓（.et-*）
   ════════════════════════════════════════════════════════════ */

/* 顶部计数头（替代旧 donate-header__contrib） */
.et-countbar {
    display: flex;
    align-items: baseline;
    gap: var(--space-6);
    padding: var(--space-8) var(--space-14);
    margin-bottom: var(--space-12);
    border-radius: var(--radius-md);
    border: 1px solid var(--border-jade);
    background: var(--bg-glass-jade);
}
.et-countbar__num {
    font-family: var(--font-mono, ui-monospace, Menlo, monospace);
    font-size: var(--font-heading);
    font-weight: 700;
    color: var(--accent-jade);
    font-variant-numeric: tabular-nums;
    line-height: 1;
}
.et-countbar__label {
    font-size: var(--font-label);
    color: var(--text-muted);
}
.et-countbar__total {
    margin-left: auto;
    font-size: var(--font-label);
    color: var(--text-secondary);
}
.et-countbar__total b {
    color: var(--text-gold);
    font-family: var(--font-mono, ui-monospace, Menlo, monospace);
    font-weight: 600;
}

/* 工具条：搜索 + 清空 */
.et-toolbar {
    display: flex;
    gap: var(--space-8);
    margin-bottom: var(--space-10);
}
.et-search {
    flex: 1;
    height: 34px;
    padding: 0 var(--space-12);
    font-size: var(--font-body);
    font-family: inherit;
    color: var(--text-primary);
    background: var(--bg-input);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    outline: none;
    transition: border-color 0.12s;
    -webkit-appearance: none;
    appearance: none;
}
.et-search:focus { border-color: var(--accent-jade); }
.et-search::placeholder { color: var(--text-muted); }
.et-clear {
    height: 34px;
    padding: 0 var(--space-14);
    font-size: var(--font-label);
    color: var(--text-muted);
    background: transparent;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: color 0.12s, border-color 0.12s, background 0.12s;
    -webkit-appearance: none;
    appearance: none;
}
.et-clear:hover:not(:disabled) {
    color: var(--text-danger);
    border-color: color-mix(in srgb, var(--accent-crimson) 36%, transparent);
    background: color-mix(in srgb, var(--accent-crimson) 6%, transparent);
}
.et-clear:disabled { opacity: 0.4; cursor: not-allowed; }

/* 符箓列表容器 */
.et-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-8);
    max-height: 52vh;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    padding-right: var(--space-2);
}

/* 符箓行（替代旧 donate-row；保留勾选 + 数量输入 + 品质色阶） */
.et-row {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: var(--space-10);
    padding: var(--space-10) var(--space-12);
    border-radius: var(--radius-md);
    border: 1px solid var(--border-color);
    background: var(--bg-panel);
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
}
.et-row:hover {
    border-color: var(--border-jade);
    background: var(--bg-card-hover);
}
.et-row.is-selected {
    border-color: color-mix(in srgb, var(--accent-jade) 45%, transparent);
    background: var(--bg-glass-jade);
}
/* 高阶品质色阶：r-4 紫 / r-5 朱 */
.et-row.r-4 { border-color: color-mix(in srgb, var(--rarity-4, var(--accent-purple)) 35%, transparent); }
.et-row.r-4.is-selected {
    border-color: color-mix(in srgb, var(--rarity-4, var(--accent-purple)) 60%, transparent);
    background: color-mix(in srgb, var(--rarity-4, var(--accent-purple)) 6%, transparent);
}
.et-row.r-5 { border-color: color-mix(in srgb, var(--rarity-5, var(--text-red)) 35%, transparent); }
.et-row.r-5.is-selected {
    border-color: color-mix(in srgb, var(--rarity-5, var(--text-red)) 60%, transparent);
    background: color-mix(in srgb, var(--rarity-5, var(--text-red)) 6%, transparent);
}

.et-check {
    margin-top: var(--space-4);
    flex-shrink: 0;
    width: 16px; height: 16px;
    accent-color: var(--accent-jade);
    cursor: pointer;
}
.et-row__body { flex: 1; min-width: 0; }
.et-row__line1 {
    display: flex;
    align-items: center;
    gap: var(--space-6);
    flex-wrap: wrap;
}
.et-row__name {
    font-size: var(--font-body-lg);
    font-weight: 600;
    color: var(--text-primary);
}
.et-row__name.r-2 { color: var(--rarity-2, var(--accent-jade)); }
.et-row__name.r-3 { color: var(--rarity-3, var(--accent-gold)); }
.et-row__name.r-4 { color: var(--rarity-4, var(--accent-purple)); }
.et-row__name.r-5 { color: var(--rarity-5, var(--accent-crimson)); }
.et-row__badge {
    font-size: var(--font-micro);
    letter-spacing: 1px;
    padding: var(--space-2) var(--space-6);
    border-radius: var(--radius-xs);
    color: var(--rarity-4, var(--accent-purple));
    background: color-mix(in srgb, var(--rarity-4, var(--accent-purple)) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--rarity-4, var(--accent-purple)) 28%, transparent);
}
.et-row__qty {
    margin-left: auto;
    font-family: var(--font-mono, ui-monospace, Menlo, monospace);
    font-size: var(--font-label);
    color: var(--text-muted);
}
/* 反馈 #10167：遭遇选符行内置顶星标（按符箓族置顶排前） */
.et-pin {
    flex-shrink: 0;
    margin-left: var(--space-4);
    padding: 0 var(--space-2);
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: var(--font-body);
    line-height: 1;
    color: var(--text-muted);
    opacity: 0.55;
}
.et-pin:hover { opacity: 1; }
.et-pin.is-pinned {
    color: var(--accent-gold, #c9a24b);
    opacity: 1;
}
.et-row__desc {
    margin-top: var(--space-4);
    font-size: var(--font-label);
    line-height: 1.5;
    color: var(--text-secondary);
    white-space: normal;
    text-wrap: wrap;
}
.et-row__meta {
    margin-top: var(--space-6);
    font-size: var(--font-caption);
    color: var(--text-muted);
}
.et-row__meta .dot { color: var(--border-color); margin: 0 var(--space-4); }
.et-qty {
    width: 52px;
    height: 28px;
    margin-top: var(--space-2);
    flex-shrink: 0;
    text-align: center;
    font-family: var(--font-mono, ui-monospace, Menlo, monospace);
    font-size: var(--font-body);
    color: var(--text-primary);
    background: var(--bg-input);
    border: 1px solid var(--border-color);
    border-radius: var(--radius-sm);
    outline: none;
    transition: border-color 0.12s;
    -webkit-appearance: none;
    appearance: none;
}
.et-qty:focus { border-color: var(--accent-jade); }
.et-qty:disabled { opacity: 0.4; cursor: not-allowed; }

.et-empty {
    text-align: center;
    padding: var(--space-32) var(--space-16);
    font-size: var(--font-label);
    color: var(--text-muted);
    line-height: 1.7;
}
.et-empty b { color: var(--text-gold); }

.et-note {
    margin: var(--space-10) var(--space-2) 0;
    font-size: var(--font-caption);
    line-height: 1.6;
    color: var(--text-muted);
    text-align: left;
}

/* 底部结算条 + 双钮 */
.et-foot {
    display: flex;
    flex-direction: column;
    gap: var(--space-10);
}
.et-summary {
    font-size: var(--font-label);
    color: var(--text-secondary);
    line-height: 1.4;
    text-align: center;
}
.et-footrow {
    display: flex;
    gap: var(--space-8);
}
.et-footrow .modal-btn { flex: 1; }
.et-footrow .modal-btn:last-child { flex: 1.4; }

/* ════════════════════════════════════════════════════════════
   雇佣护道者（.pt-*）— 玉牌卡 protector-card 不动，只加壳内分区
   ════════════════════════════════════════════════════════════ */
.pt-lead {
    font-size: var(--font-body);
    line-height: 1.65;
    color: var(--text-secondary);
    text-align: center;
    margin: var(--space-4) var(--space-4) var(--space-14);
}
.pt-lead .danger { color: var(--text-danger); font-weight: 600; }
.pt-toolbar {
    margin: 0 var(--space-2) var(--space-10);
    padding: var(--space-8) var(--space-10);
    border: 1px solid color-mix(in srgb, var(--border-gold) 55%, transparent);
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--bg-glass) 88%, transparent);
}
.pt-toolbar__row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-8) var(--space-10);
}
.pt-toolbar__label {
    font-size: var(--font-label);
    color: var(--text-muted);
    flex-shrink: 0;
}
.pt-sort-group {
    display: inline-flex;
    flex-wrap: wrap;
    gap: var(--space-4);
    flex: 1 1 auto;
    min-width: 0;
}
.pt-sort-btn {
    appearance: none;
    border: 1px solid color-mix(in srgb, var(--border-gold) 60%, transparent);
    background: color-mix(in srgb, var(--bg-panel) 90%, transparent);
    color: var(--text-secondary);
    font-size: var(--font-label);
    line-height: 1.2;
    padding: var(--space-4) var(--space-10);
    border-radius: var(--radius-pill);
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s, color 0.15s;
}
.pt-sort-btn:hover {
    border-color: color-mix(in srgb, var(--craft-gold) 55%, transparent);
    color: var(--text-primary);
}
.pt-sort-btn.is-active {
    border-color: color-mix(in srgb, var(--craft-gold) 70%, transparent);
    background: color-mix(in srgb, var(--craft-gold) 16%, transparent);
    color: var(--text-gold);
    font-weight: 600;
}
.pt-filter-busy {
    display: inline-flex;
    align-items: center;
    gap: var(--space-6);
    margin-left: auto;
    font-size: var(--font-label);
    color: var(--text-secondary);
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}
.pt-filter-busy input {
    margin: 0;
    accent-color: var(--craft-gold);
}
.pt-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-10);
    max-height: 50vh;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    padding-right: var(--space-2);
}
.pt-list .et-empty { padding: var(--space-20) var(--space-16); }

/* 宗门护道化身卡（替代旧 renderSectAvatarCard 的裸 style 内联；
   视觉比普通玉牌卡轻一档，区分宗门来源） */
.sect-avatar-card {
    position: relative;
    border: 1px solid var(--border-gold);
    border-radius: var(--radius-md);
    padding: var(--space-10) var(--space-12);
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--accent-gold) 8%, transparent) 0%, transparent 60%),
        var(--bg-panel);
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb, var(--accent-gold) 5%, transparent),
        0 2px 6px var(--shadow-black-2);
    transition: border-color 0.2s, box-shadow 0.2s;
}
.sect-avatar-card:hover {
    border-color: color-mix(in srgb, var(--accent-gold) 45%, transparent);
    box-shadow:
        inset 0 0 0 1px color-mix(in srgb, var(--accent-gold) 12%, transparent),
        0 4px 12px color-mix(in srgb, var(--accent-gold) 10%, transparent);
}
.sect-avatar-card__head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--space-6);
    gap: var(--space-8);
}
.sect-avatar-card__name {
    font-size: var(--font-body);
    font-weight: 600;
    color: var(--text-gold);
    letter-spacing: 0.5px;
}
.sect-avatar-card__status { font-size: var(--font-caption); }
.sect-avatar-card__status--ok { color: var(--text-jade); }
.sect-avatar-card__status--off { color: var(--text-muted); }
.sect-avatar-card__body {
    font-size: var(--font-label);
    color: var(--text-secondary);
    line-height: 1.6;
}
.sect-avatar-card__body b {
    color: var(--text-gold);
    font-family: var(--font-mono, ui-monospace, Menlo, monospace);
    font-weight: 600;
}
.sect-avatar-card__hint {
    margin-top: var(--space-4);
    font-size: var(--font-caption);
    color: var(--text-muted);
    line-height: 1.55;
}
.sect-avatar-card__btn {
    margin-top: var(--space-8);
    width: 100%;
    height: 34px;
    border-radius: var(--radius-md);
    border: 1px solid var(--border-gold);
    background: var(--gradient-gold);
    color: var(--text-gold);
    font-size: var(--font-body);
    font-family: inherit;
    cursor: pointer;
    transition: background 0.12s, border-color 0.12s;
    -webkit-appearance: none;
    appearance: none;
}
.sect-avatar-card__btn:hover:not(:disabled) {
    background: color-mix(in srgb, var(--accent-gold) 22%, transparent);
    border-color: color-mix(in srgb, var(--accent-gold) 50%, transparent);
}
.sect-avatar-card__btn:disabled { opacity: 0.5; cursor: not-allowed; }
