/* Round 3：兑换码、商城与商店、活动配置、已删除角色、攻城战（rem 单位） */
.badge.warn:before{background:var(--warn)}.badge.warn{color:var(--text)}
.r3-p+.r3-p,.cards+.r3-p,.table-card+.r3-p,.r3-p+.alert,.table-card+.alert,.r3-p+.meta{margin-top:1rem}
.cards+.table-card{margin-top:1rem}
.r3-p .panel-h{display:flex;align-items:center;gap:0.5rem;flex-wrap:wrap}
.r3-bar{height:0.3125rem;background:var(--bg-muted);border-radius:999px;margin-top:0.25rem;max-width:8rem;overflow:hidden}
.r3-bar i{display:block;height:100%;background:var(--accent);border-radius:999px}
.btn.sm{padding:0.25rem 0.5rem;font-size:0.75rem;min-height:0;height:auto}
.btn-row{display:flex;gap:0.5rem;flex-wrap:wrap;margin-top:0.5rem}
.r3-gen .form-row{gap:0.5rem}.r3-gen .field{min-width:0}
.gen-it{align-items:flex-start;margin-bottom:0.375rem}.gen-it .field{margin:0}.gen-it .field:not(.grow){max-width:6rem}
.gen-nm{display:block;min-height:1rem;font-size:0.7rem}
.r3-codes{font-size:0.75rem;line-height:1.7;max-height:8rem;overflow:auto;padding:0.5rem;border:1px solid var(--border-soft);border-radius:var(--radius-sm);background:var(--bg-subtle);word-spacing:0.5rem;overflow-wrap:anywhere}
/* 活动编辑 */
.r3-files{display:flex;flex-wrap:wrap;gap:0.5rem;margin-bottom:1rem}
.r3-file{display:flex;flex-direction:column;gap:0.125rem;padding:0.5rem 0.75rem;border:1px solid var(--border-soft);border-radius:var(--radius-sm);background:var(--panel);min-width:14rem;flex:1}
.r3-file b{font-size:0.8125rem}.r3-file .mono{font-size:0.6875rem;overflow-wrap:anywhere}
.r3-in{font:inherit;font-size:0.8125rem;padding:0.25rem 0.375rem;border:1px solid var(--border);border-radius:0.375rem;background:var(--panel);color:var(--text);width:6rem;max-width:100%;min-width:0}
.r3-in:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 0.1875rem var(--accent-soft)}
.r3-in.changed,.r3-sus.changed{border-color:var(--warn);background:color-mix(in srgb,var(--warn) 10%,var(--panel))}
.r3-in.w3{width:3rem}.r3-in.w4{width:4rem}.r3-in.w5{width:4.5rem}.r3-in.w6{width:5.5rem}.r3-in.w10{width:7.5rem}.r3-in.w14{width:9rem}.r3-in.w16{width:11rem}.r3-in.w24{width:14rem}.r3-in.w30{width:18rem}
.r3-nm{display:block;font-size:0.6875rem;line-height:1.3;min-height:0.875rem}
.r3-sub{display:flex;align-items:flex-start;gap:0.25rem;flex-wrap:wrap;margin:0.125rem 0}.r3-sub .r3-nm{flex-basis:100%;order:3}
.r3-kv{display:inline-flex;flex-direction:column;gap:0.25rem;margin:0 1rem 0.75rem 0;vertical-align:top}
.r3-kv>label{font-size:0.6875rem;color:var(--muted)}
.r3-sus{font:inherit;font-size:0.8125rem;padding:0.25rem 0.375rem;border:1px solid var(--border);border-radius:0.375rem;background:var(--panel);color:var(--text);width:11.5rem;font-family:var(--mono)}
.r3-act{display:flex;flex-wrap:wrap;align-items:flex-end;margin-bottom:0.25rem}
.r3-bar-s{position:sticky;bottom:0.75rem;z-index:20;display:flex;align-items:center;gap:0.5rem;margin-top:1rem;padding:0.625rem 0.875rem;background:var(--panel);border:1px solid var(--warn);border-radius:var(--radius);box-shadow:var(--shadow-pop)}
.r3-bar-s>span{flex:1;display:flex;align-items:center;gap:0.375rem;font-size:0.8125rem}.r3-bar-s svg.i{color:var(--warn)}
.r3-bar-s[hidden]{display:none}
.r3-diff{font-family:var(--mono);font-size:0.75rem;max-height:16rem;overflow:auto;border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:0.5rem;background:var(--bg-subtle);line-height:1.55}
.r3-diff .ln{color:var(--muted);margin-top:0.25rem}.r3-diff .old{color:var(--danger);overflow-wrap:anywhere}.r3-diff .new{color:var(--ok);overflow-wrap:anywhere}
/* 时间轴 */
.tl{display:flex;flex-direction:column;gap:0.5rem}
.tl-row{display:grid;grid-template-columns:12rem 1fr 11rem;gap:0.75rem;align-items:center}
.tl-l b{display:block;font-size:0.8125rem}.tl-l small{color:var(--muted);font-size:0.75rem;display:flex;gap:0.375rem;align-items:center}
.tl-track{position:relative;height:1.375rem;background:var(--bg-subtle);border:1px solid var(--border-soft);border-radius:0.375rem}
.tl-seg{position:absolute;top:0.1875rem;bottom:0.1875rem;border-radius:0.25rem;background:var(--muted);min-width:0.25rem}
.tl-seg.ok{background:var(--ok)}.tl-seg.info{background:var(--accent)}.tl-seg.warn{background:var(--warn)}
.tl-now{position:absolute;top:-0.25rem;bottom:-0.25rem;width:2px;background:var(--danger)}
.tl-r{font-size:0.6875rem;color:var(--text-2);line-height:1.35}
.tl-axis{display:flex;justify-content:space-between;font-size:0.6875rem;color:var(--muted);margin-left:12.75rem;margin-right:11.75rem}
.wk{margin-bottom:0.75rem}.wk>b{display:block;font-size:0.8125rem;margin-bottom:0.375rem}
.wk-g{display:grid;grid-template-columns:repeat(7,1fr);gap:0.375rem}
.wk-d{padding:0.5rem;border:1px solid var(--border-soft);border-radius:var(--radius-sm);text-align:center;color:var(--muted)}
.wk-d span{display:block;font-size:0.75rem}.wk-d small{font-size:0.6875rem;font-family:var(--mono)}
.wk-d.on{border-color:color-mix(in srgb,var(--ok) 45%,transparent);background:color-mix(in srgb,var(--ok) 8%,transparent);color:var(--text)}
/* 已删除角色 / 攻城 */
.dr-ava{background:linear-gradient(135deg,#9ca3af,#6b7280)!important}
.gd-head .dr-act{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:0.25rem}
.gd-head .dr-act button[disabled]{opacity:0.55;cursor:not-allowed}
.r3-pre{font-family:var(--mono);font-size:0.75rem;line-height:1.6;background:var(--bg-subtle);border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:0.625rem 0.75rem;overflow:auto;white-space:pre;margin:0 0 0.75rem}
.r3-clip{display:block;max-width:40rem;white-space:pre-wrap;overflow-wrap:anywhere;max-height:6rem;overflow:auto}
@media (max-width:1100px){.tl-row{grid-template-columns:9rem 1fr}.tl-r{grid-column:1/-1;margin-top:-0.375rem}.tl-axis{margin:0 0 0 9.75rem}}
@media (max-width:768px){
  .tl-row{grid-template-columns:1fr}.tl-axis{margin:0}.tl-r{margin-top:0}
  .wk-g{grid-template-columns:repeat(4,1fr)}
  .r3-kv{display:flex;margin-right:0}.r3-sus{width:100%}.r3-in.w24,.r3-in.w30,.r3-in.w16{width:100%}
  .r3-bar-s{bottom:calc(var(--tabbar-h,3.5rem) + 0.5rem);flex-wrap:wrap}.r3-bar-s>span{flex-basis:100%}
  .gd-head .dr-act{margin-left:0;align-items:flex-start;width:100%}
  .r3-file{min-width:0;flex-basis:100%}
}
.dlg-req{display:block;line-height:1.6}.dlg-req input{display:block;margin-top:0.375rem}
details.r3-ro>summary{cursor:pointer;font-size:0.8125rem;color:var(--text-2);padding:0.375rem 0}
details.r3-ro[open]>summary{margin-bottom:0.5rem}
#drBody>.gd-head+.kv-grid,#drBody>.gd-head+.alert,#drBody .kv-grid+.panel,#drBody>.alert+.kv-grid{margin-top:1rem}
.dlg:has(.r3-diff),.dlg:has(.r3-gen){width:min(46rem,100%)}
.dlg,.dlg-b{min-width:0}
.dlg-b .r3-diff div,.dlg-diff td{overflow-wrap:anywhere;word-break:break-all}

/* r3 统计卡片使用 .ca 包裹（不是链接），补齐与 .card a 一致的内边距 */
.card .ca{display:block;padding:1rem 1.125rem;height:100%;min-width:0}
.card .ca .n{overflow-wrap:anywhere}
@media (max-width:640px){.card .ca{padding:0.875rem}}
