/* 绩点战争 · 战术控制台 */
:root {
  --gpa-panel: rgba(10, 15, 34, .86);
  --gpa-panel-strong: rgba(15, 22, 48, .96);
  --gpa-grid: rgba(var(--c-blue-soft-rgb), .055);
  --gpa-cyan: var(--c-cyan);
  --gpa-danger: #fb7185;
  --gpa-warning: #fbbf24;
  --gpa-ok: #34d399;
  --gpa-focus: #a5f3fc;
}

body.gpa-page { background: #050812; display: flex; flex-direction: column; min-height: 100vh; }
.gpa-page .bg-mesh::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(var(--gpa-grid) 1px, transparent 1px),
    linear-gradient(90deg, var(--gpa-grid) 1px, transparent 1px);
  background-size: 42px 42px;
  mask-image: linear-gradient(to bottom, transparent, #000 16%, #000 82%, transparent);
}

.gpa-game {
  width: min(1480px, 100%);
  margin: 0 auto;
  padding: 26px clamp(14px, 2.6vw, 34px) 72px;
  flex: 1 0 auto;
}
.gpa-topbar-spacer { display: none; }
.gpa-hero {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 20px;
}
.gpa-hero .crumb { margin-bottom: 8px; }
.gpa-kicker {
  color: var(--gpa-cyan);
  font: 700 11px/1.2 ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing: .18em;
  text-transform: uppercase;
}
.gpa-title { margin-top: 5px; font-size: clamp(26px, 3vw, 38px); line-height: 1.1; }
.gpa-version {
  display: inline-flex;
  vertical-align: middle;
  margin-left: 10px;
  padding: 5px 9px;
  border: 1px solid rgba(103, 232, 249, .22);
  border-radius: 999px;
  color: var(--gpa-cyan);
  background: rgba(var(--c-cyan-rgb), .08);
  font: 650 11px/1 ui-monospace, SFMono-Regular, Consolas, monospace;
}
.gpa-hero-status {
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--ink-faint);
  font: 600 11px/1.4 ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing: .08em;
}
.gpa-hero-status::before {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--gpa-ok);
  box-shadow: 0 0 14px var(--gpa-ok);
}

.gpa-board {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 330px);
  gap: 14px;
  align-items: start;
}
.gpa-phase-bar { grid-column: 1 / -1; }
.gpa-side {
  position: relative;
  overflow: hidden;
  min-width: 0;
  padding: 20px;
  border: 1px solid rgba(148, 163, 184, .14);
  border-radius: 18px;
  background:
    linear-gradient(135deg, rgba(var(--c-purple-rgb), .045), transparent 36%),
    var(--gpa-panel);
  box-shadow: 0 18px 60px rgba(0, 0, 0, .24), inset 0 1px rgba(255, 255, 255, .035);
  transition: border-color .24s ease, box-shadow .24s ease;
}
.gpa-side::before {
  content: "";
  position: absolute;
  inset: 0 auto auto 0;
  width: 120px;
  height: 2px;
  background: linear-gradient(90deg, var(--c-purple), var(--c-blue), transparent);
  opacity: .65;
}
.gpa-side.active-turn {
  border-color: rgba(var(--c-emerald-rgb), .5);
  box-shadow: 0 0 0 1px rgba(var(--c-emerald-rgb), .1), 0 20px 65px rgba(var(--c-green-rgb), .1);
}
.gpa-side.active-turn::after {
  content: "ACTIVE";
  position: absolute;
  top: 13px;
  right: 15px;
  color: var(--gpa-ok);
  font: 700 9px/1 ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing: .16em;
}
.gpa-side.opponent-side { border-color: rgba(251, 113, 133, .2); }
.gpa-side.opponent-side::before { background: linear-gradient(90deg, var(--gpa-danger), var(--c-purple), transparent); }
.gpa-side.opponent-side.active-turn {
  border-color: rgba(var(--c-violet-soft-rgb), .52);
  box-shadow: 0 0 0 1px rgba(var(--c-purple-rgb), .12), 0 20px 65px rgba(var(--c-purple-rgb), .11);
}
.gpa-side.opponent-side.active-turn::after { color: #c4b5fd; }
.gpa-log-panel { grid-column: 2; grid-row: 2 / span 2; position: sticky; top: 84px; padding: 16px; }
.gpa-panel-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
  color: var(--ink-dim);
  font-size: 12px;
  font-weight: 750;
  letter-spacing: .08em;
}
.gpa-panel-heading::after {
  content: "STREAM / LIVE";
  color: var(--gpa-ok);
  font: 700 9px/1 ui-monospace, SFMono-Regular, Consolas, monospace;
}

.gpa-player-row { display: flex; align-items: center; gap: 15px; }
.gpa-player-data { flex: 1; min-width: 0; }
.gpa-avatar {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: 50px;
  height: 50px;
  border: 1px solid rgba(103, 232, 249, .28);
  border-radius: 14px;
  background: linear-gradient(145deg, rgba(var(--c-purple-rgb), .8), rgba(var(--c-blue-rgb), .72));
  box-shadow: inset 0 1px rgba(255, 255, 255, .18), 0 8px 24px rgba(var(--c-blue-rgb), .2);
  font-size: 24px;
}
.gpa-avatar.ai { background: linear-gradient(145deg, rgba(225, 29, 72, .78), rgba(var(--c-purple-rgb), .72)); }
.gpa-name { color: var(--ink); font-size: 16px; font-weight: 780; }
.turn-tag { margin-left: 6px; color: var(--gpa-ok); font-size: 11px; font-weight: 600; }
.opponent-side .turn-tag { color: #c4b5fd; }
.gpa-stats { display: grid; grid-template-columns: repeat(4, minmax(74px, 1fr)); gap: 8px; margin-top: 9px; }
.gpa-stat {
  min-width: 0;
  padding: 8px 10px;
  border: 1px solid rgba(148, 163, 184, .1);
  border-radius: 10px;
  background: rgba(2, 6, 23, .42);
}
.gpa-stat label,
.gpa-stat .gpa-stat-label {
  display: block;
  color: var(--ink-faint);
  font: 650 9px/1.2 ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing: .12em;
}
.gpa-stat .val { display: block; margin-top: 4px; color: var(--ink); font: 750 20px/1.1 ui-monospace, SFMono-Regular, Consolas, monospace; }
.gpa-stat .hp { color: #fb7185; }
.gpa-stat .gpa { color: #c4b5fd; }
.gpa-stat .energy { color: #7dd3fc; }
.gpa-stat .shield { color: #6ee7b7; }
.gpa-hp-bar, .gpa-gpa-bar { height: 3px; margin-top: 7px; overflow: hidden; border-radius: 99px; background: rgba(255, 255, 255, .08); }
.gpa-hp-bar-fill, .gpa-gpa-bar-fill { height: 100%; border-radius: inherit; transition: width .45s cubic-bezier(.16, 1, .3, 1); }
.gpa-hp-bar-fill { background: linear-gradient(90deg, #e11d48, #fb7185); }
.gpa-gpa-bar-fill { background: linear-gradient(90deg, var(--c-purple), var(--c-cyan)); }

.gpa-phase-bar {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  overflow: hidden;
  border: 1px solid rgba(148, 163, 184, .13);
  border-radius: 12px;
  background: rgba(2, 6, 23, .56);
}
.gpa-phase-step {
  position: relative;
  padding: 10px 8px;
  border-right: 1px solid rgba(148, 163, 184, .11);
  color: var(--ink-faint);
  text-align: center;
  font: 650 11px/1.2 ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing: .08em;
}
.gpa-phase-step:last-child { border-right: 0; }
.gpa-phase-step.active { color: #d1fae5; background: linear-gradient(90deg, rgba(var(--c-green-rgb), .08), rgba(var(--c-blue-rgb), .08)); }
.gpa-phase-step.active::after { content: ""; position: absolute; right: 14%; bottom: 0; left: 14%; height: 2px; background: var(--gpa-ok); box-shadow: 0 0 12px var(--gpa-ok); }
.gpa-phase-step.done { color: var(--ink-muted); }

.gpa-hand-label {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 16px 0 9px;
  color: var(--ink-dim);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .06em;
}
.gpa-label-meta { color: var(--ink-faint); font-size: 11px; font-weight: 500; letter-spacing: 0; }
.gpa-label-end { margin-left: auto; }
.gpa-hand, .gpa-shop { display: flex; gap: 10px; min-width: 0; min-height: 132px; flex-wrap: wrap; }
.gpa-hand.opponent-hand { min-height: 52px; }
.gpa-card-back {
  display: grid;
  place-items: center;
  width: 42px;
  height: 58px;
  border: 1px solid rgba(var(--c-violet-soft-rgb), .2);
  border-radius: 8px;
  color: #a78bfa;
  background: repeating-linear-gradient(135deg, rgba(var(--c-purple-rgb), .16) 0 5px, rgba(15, 23, 42, .82) 5px 10px);
  box-shadow: 0 6px 14px rgba(0, 0, 0, .22);
}
.gpa-card, .gpa-shop-slot {
  appearance: none;
  width: 144px;
  min-height: 132px;
  padding: 12px;
  border: 1px solid rgba(148, 163, 184, .16);
  border-radius: 13px;
  color: inherit;
  text-align: left;
  background:
    linear-gradient(155deg, rgba(var(--c-indigo-rgb), .11), transparent 47%),
    rgba(15, 23, 42, .8);
  box-shadow: inset 0 1px rgba(255, 255, 255, .04), 0 8px 24px rgba(0, 0, 0, .18);
  cursor: pointer;
  user-select: none;
  transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.gpa-card:hover:not(.disabled), .gpa-shop-slot.has-card:hover:not(.disabled) {
  z-index: 2;
  transform: translateY(-4px);
  border-color: rgba(103, 232, 249, .55);
  box-shadow: 0 14px 32px rgba(var(--c-blue-rgb), .16), inset 0 1px rgba(255, 255, 255, .07);
}
.gpa-card.disabled, .gpa-shop-slot.disabled { opacity: .46; cursor: not-allowed; filter: saturate(.55); }
.gpa-card.selected { border-color: var(--gpa-ok); box-shadow: 0 0 0 2px rgba(var(--c-emerald-rgb), .25); }
.gpa-card-name { display: block; margin-bottom: 5px; color: var(--ink); font-size: 14px; font-weight: 760; }
.gpa-card-type { display: inline-block; margin-bottom: 7px; padding: 2px 7px; border-radius: 5px; font: 700 10px/1.5 ui-monospace, SFMono-Regular, Consolas, monospace; }
.gpa-card-type.攻击 { color: #fb7185; background: rgba(244, 63, 94, .13); }
.gpa-card-type.防御 { color: #7dd3fc; background: rgba(var(--c-sky-rgb), .13); }
.gpa-card-type.治疗 { color: #6ee7b7; background: rgba(var(--c-green-rgb), .13); }
.gpa-card-type.过牌 { color: #d8b4fe; background: rgba(168, 85, 247, .13); }
.gpa-card-type.资源 { color: #fbbf24; background: rgba(245, 158, 11, .13); }
.gpa-card-type.检索 { color: #5eead4; background: rgba(20, 184, 166, .13); }
.gpa-card-type.GPA { color: #c4b5fd; background: rgba(var(--c-purple-rgb), .15); }
.gpa-card-type.干扰 { color: #fda4af; background: rgba(244, 63, 94, .12); }
.gpa-card-type.逆风 { color: #fde047; background: rgba(234, 179, 8, .13); }
.gpa-card-type.连携 { color: #a5b4fc; background: rgba(var(--c-indigo-rgb), .14); }
.gpa-card-desc { display: block; min-height: 38px; margin-bottom: 8px; color: var(--ink-dim); font-size: 11px; line-height: 1.55; }
.gpa-card-cost { display: flex; gap: 8px; margin-top: auto; font: 650 10px/1.2 ui-monospace, SFMono-Regular, Consolas, monospace; }
.gpa-card-cost span { display: inline-flex; align-items: center; gap: 2px; }
.cost-use { color: #7dd3fc; }
.cost-buy { color: #fbbf24; }
.cost-wt { color: var(--ink-faint); }
.gpa-shop { min-height: 132px; }
.gpa-shop-slot { display: flex; align-items: stretch; justify-content: center; border-style: dashed; color: var(--ink-muted); }
.gpa-shop-slot.has-card { border-style: solid; }
.gpa-shop-slot.empty { align-items: center; justify-content: center; text-align: center; cursor: default; }
.gpa-shop-card-body { width: 100%; }

.gpa-skill-active { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 11px; }
.gpa-skill-chip {
  appearance: none;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 10px;
  border: 1px solid rgba(var(--c-violet-soft-rgb), .24);
  border-radius: 8px;
  color: #c4b5fd;
  background: rgba(var(--c-purple-rgb), .1);
  font: 650 11px/1.2 ui-monospace, SFMono-Regular, Consolas, monospace;
}
.gpa-skill-chip.ready { cursor: pointer; border-color: rgba(103, 232, 249, .34); }
.gpa-skill-chip.ready:hover { background: rgba(var(--c-blue-rgb), .16); }
.gpa-skill-chip.on-cd { opacity: .5; }
.cd-tag { color: var(--ink-faint); font-size: 9px; }
.gpa-log {
  max-height: min(590px, calc(100vh - 190px));
  overflow: auto;
  padding: 5px 5px 5px 1px;
  color: var(--ink-dim);
  font: 500 11px/1.75 ui-monospace, SFMono-Regular, Consolas, monospace;
  scrollbar-width: thin;
}
.gpa-log > div { padding: 4px 6px; border-bottom: 1px solid rgba(148, 163, 184, .07); }
.log-turn { color: var(--ink-muted); }
.log-damage { color: #fda4af; }
.log-heal { color: #6ee7b7; }
.log-gpa { color: #c4b5fd; }
.log-buy { color: #fcd34d; }
.log-shield { color: #7dd3fc; }
.log-system { color: var(--ink-faint); font-style: italic; }
.gpa-controls { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 17px; padding-top: 15px; border-top: 1px solid rgba(148, 163, 184, .11); }
.gpa-btn {
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 40px;
  padding: 9px 17px;
  border: 1px solid transparent;
  border-radius: 10px;
  color: #fff;
  font: 700 13px/1.2 inherit;
  cursor: pointer;
  transition: transform .18s ease, box-shadow .18s ease, background .18s ease;
}
.gpa-btn:hover:not(:disabled) { transform: translateY(-1px); }
.gpa-btn:disabled { opacity: .42; cursor: not-allowed; }
.gpa-btn-primary { background: linear-gradient(110deg, var(--c-purple), var(--c-blue) 55%, var(--c-green)); box-shadow: 0 8px 22px rgba(var(--c-blue-rgb), .18); }
.gpa-btn-ghost { border-color: rgba(148, 163, 184, .18); color: var(--ink-dim); background: rgba(255, 255, 255, .045); }
.gpa-btn-ghost:hover:not(:disabled) { background: rgba(255, 255, 255, .08); }
.gpa-btn-danger { border-color: rgba(244, 63, 94, .2); color: #fda4af; background: rgba(244, 63, 94, .1); }
.gpa-refresh { min-height: 30px; margin-left: auto; padding: 4px 11px; font-size: 11px; }

.gpa-overlay {
  position: fixed;
  z-index: 1000;
  inset: 0;
  display: grid;
  place-items: center;
  overflow-y: auto;
  padding: 24px;
  background: rgba(2, 4, 14, .86);
  backdrop-filter: blur(14px) saturate(125%);
}
.gpa-overlay.hidden { display: none; }
.gpa-overlay-card {
  position: relative;
  width: min(580px, 100%);
  padding: clamp(24px, 4vw, 38px);
  border: 1px solid rgba(103, 232, 249, .16);
  border-radius: 20px;
  text-align: center;
  background:
    linear-gradient(135deg, rgba(var(--c-purple-rgb), .12), transparent 44%),
    var(--gpa-panel-strong);
  box-shadow: 0 32px 100px rgba(0, 0, 0, .58), inset 0 1px rgba(255, 255, 255, .06);
}
.gpa-overlay-card::before { content: ""; position: absolute; top: 0; left: 12%; width: 76%; height: 1px; background: linear-gradient(90deg, transparent, var(--gpa-cyan), transparent); }
.gpa-overlay-card h2 { margin-bottom: 10px; font-size: clamp(24px, 4vw, 31px); }
.gpa-overlay-card > p { margin-bottom: 18px; color: var(--ink-dim); font-size: 14px; line-height: 1.75; }
.gpa-dialog-icon { margin-bottom: 12px; font-size: 44px; }
.gpa-start-copy strong.gpa-goal { color: #c4b5fd; }
.gpa-start-copy strong.gpa-danger-copy { color: #fb7185; }
.gpa-start-note { color: var(--ink-faint); font-size: 12px; }
.gpa-skill-section { margin: 18px 0; text-align: left; }
.gpa-skill-section h3 { margin-bottom: 9px; font-size: 14px; }
.gpa-skill-pick { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; text-align: left; }
.gpa-skill-option {
  appearance: none;
  padding: 12px;
  border: 1px solid rgba(148, 163, 184, .15);
  border-radius: 11px;
  color: inherit;
  text-align: left;
  background: rgba(255, 255, 255, .025);
  cursor: pointer;
}
.gpa-skill-option:hover { border-color: rgba(103, 232, 249, .45); background: rgba(var(--c-blue-rgb), .06); }
.gpa-skill-option.selected { border-color: var(--gpa-ok); background: rgba(var(--c-green-rgb), .07); box-shadow: 0 0 0 1px rgba(var(--c-green-rgb), .18); }
.sk-name { display: block; margin-bottom: 3px; color: var(--ink); font-size: 14px; font-weight: 750; }
.sk-type { display: block; margin-bottom: 5px; color: var(--gpa-cyan); font: 650 10px/1.4 ui-monospace, SFMono-Regular, Consolas, monospace; }
.sk-desc { display: block; color: var(--ink-dim); font-size: 11px; line-height: 1.5; }
.sk-cost { display: block; margin-top: 5px; color: #fda4af; font-size: 10px; }
.gpa-dialog-actions { display: flex; justify-content: center; gap: 10px; }
.gpa-help-card { width: min(620px, 100%); }
.gpa-help-title { margin-bottom: 15px; font-size: 22px !important; }
.gpa-rules { text-align: left; color: var(--ink-dim); font-size: 13px; line-height: 1.75; }
.gpa-rules p { padding: 6px 0; border-bottom: 1px solid rgba(148, 163, 184, .08); }
.gpa-rules strong { color: var(--ink); }
.gpa-help-close { margin-top: 18px; }
.gpa-toast {
  position: fixed;
  z-index: 2000;
  top: 82px;
  left: 50%;
  max-width: calc(100vw - 32px);
  padding: 10px 18px;
  border: 1px solid rgba(103, 232, 249, .22);
  border-radius: 9px;
  color: var(--ink);
  background: rgba(10, 15, 34, .95);
  box-shadow: 0 12px 34px rgba(0, 0, 0, .36);
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, -10px);
  transition: opacity .22s ease, transform .22s ease;
  font-size: 13px;
}
.gpa-toast.show { opacity: 1; transform: translate(-50%, 0); }
.gpa-sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }

.gpa-page :where(button, a, [tabindex]):focus-visible { outline: 2px solid var(--gpa-focus); outline-offset: 3px; }

@media (max-width: 980px) {
  .gpa-board { grid-template-columns: minmax(0, 1fr); }
  .gpa-phase-bar, .gpa-log-panel { grid-column: 1; }
  .gpa-log-panel { grid-row: auto; position: static; }
  .gpa-log { max-height: 180px; }
}
@media (max-width: 680px) {
  .gpa-game { padding-inline: 12px; padding-top: 18px; }
  .gpa-hero { align-items: start; }
  .gpa-hero-status { display: none; }
  .gpa-title { font-size: 25px; }
  .gpa-version { margin-left: 5px; }
  .gpa-side { padding: 15px; border-radius: 15px; }
  .gpa-side.active-turn::after { display: none; }
  .gpa-player-row { align-items: flex-start; gap: 10px; }
  .gpa-avatar { width: 42px; height: 42px; border-radius: 11px; font-size: 20px; }
  .gpa-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gpa-stat .val { font-size: 17px; }
  .gpa-phase-step { padding: 9px 2px; font-size: 9px; }
  .gpa-hand, .gpa-shop {
    flex-wrap: nowrap;
    overflow-x: auto;
    margin-inline: -15px;
    padding: 1px 15px 13px;
    scroll-padding-inline: 15px;
    scroll-snap-type: x proximity;
    overscroll-behavior-inline: contain;
    scrollbar-width: thin;
  }
  .gpa-card, .gpa-shop-slot { flex: 0 0 132px; width: 132px; min-height: 128px; scroll-snap-align: start; }
  .gpa-card:hover:not(.disabled), .gpa-shop-slot.has-card:hover:not(.disabled) { transform: none; }
  .gpa-controls { display: grid; grid-template-columns: 1fr 1fr; }
  .gpa-controls .gpa-btn:first-child { grid-column: 1 / -1; }
  .gpa-refresh { margin-left: auto; }
  .gpa-label-meta { max-width: 150px; }
  .gpa-overlay { align-items: start; padding: 12px; }
  .gpa-overlay-card { margin: 12px 0; padding: 22px 16px; }
  .gpa-skill-pick { grid-template-columns: 1fr; }
  .gpa-dialog-actions { flex-direction: column; }
  .gpa-dialog-actions .gpa-btn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .gpa-page *, .gpa-page *::before, .gpa-page *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .gpa-card:hover:not(.disabled), .gpa-shop-slot.has-card:hover:not(.disabled), .gpa-btn:hover:not(:disabled) { transform: none; }
}

/* Tianze UI v4 generated material bridge for GPA Battle. */
body.gpa-page {
  background-color: #09111f !important;
  background-image: var(--tz-v4-wallpaper) !important;
  background-position: center top !important;
  background-size: cover !important;
  background-attachment: fixed !important;
}

.gpa-page :where(
  .gpa-side,
  .gpa-phase-bar,
  .gpa-log-panel,
  .gpa-stat,
  .gpa-card,
  .gpa-card-back,
  .gpa-shop-slot,
  .gpa-skill-chip,
  .gpa-overlay-card,
  .gpa-skill-option,
  .gpa-toast
) {
  background-color: var(--tz-v4-surface-color) !important;
  background-image: var(--tz-v4-surface) !important;
  background-position: center !important;
  background-size: cover !important;
  background-blend-mode: multiply !important;
  border-color: var(--tz-v4-line) !important;
}

.gpa-page .gpa-btn {
  background-color: rgba(var(--c-blue-rgb), 0.42) !important;
  background-image: var(--tz-v4-button) !important;
  background-position: center !important;
  background-size: cover !important;
  background-blend-mode: screen !important;
  border-color: var(--tz-v4-line) !important;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.55);
}

.gpa-page .gpa-btn:hover:not(:disabled) {
  background-color: rgba(var(--c-green-rgb), 0.54) !important;
  background-image: var(--tz-v4-button) !important;
  filter: brightness(1.1) saturate(1.08);
}

.gpa-page .gpa-btn-ghost {
  background-color: var(--tz-v4-surface-color) !important;
  background-blend-mode: multiply !important;
}

/* Preserve gameplay state cues above the generated material bridge. */
.gpa-page .gpa-side.opponent-side {
  border-color: rgba(251, 113, 133, .2) !important;
}

.gpa-page .gpa-side.active-turn {
  border-color: rgba(var(--c-emerald-rgb), .5) !important;
}

.gpa-page .gpa-side.opponent-side.active-turn {
  border-color: rgba(var(--c-violet-soft-rgb), .52) !important;
}

.gpa-page .gpa-card.selected,
.gpa-page .gpa-skill-option.selected {
  border-color: var(--gpa-ok) !important;
}

.gpa-page .gpa-skill-option.selected {
  background-color: rgba(var(--c-green-rgb), .07) !important;
  background-blend-mode: multiply !important;
}

.gpa-page .gpa-btn.gpa-btn-danger {
  background-color: rgba(127, 29, 29, .72) !important;
  background-blend-mode: multiply !important;
  border-color: rgba(251, 113, 133, .58) !important;
  color: #fecdd3;
}

.gpa-page .gpa-btn.gpa-btn-danger:hover:not(:disabled) {
  background-color: rgba(153, 27, 27, .78) !important;
  background-blend-mode: multiply !important;
  border-color: rgba(251, 113, 133, .78) !important;
}
