.campaign-shell{max-width:1180px;margin:0 auto;padding:1.5rem}.campaign-hero{padding:1.5rem;border:1px solid var(--border-color,rgba(255,255,255,.18));border-radius:20px;background:linear-gradient(135deg,rgba(88,101,242,.2),rgba(10,10,24,.35));margin-bottom:1rem}.eyebrow{color:#ffd166;font-weight:800;letter-spacing:.12em}.campaign-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1rem}.draft-grid{grid-template-columns:repeat(auto-fit,minmax(145px,1fr))}.campaign-mon,.master-card{border:1px solid rgba(255,255,255,.18);border-radius:16px;background:var(--surface-color,#171724);color:inherit;padding:.75rem;text-align:center}.campaign-mon{cursor:pointer}.campaign-mon.selected{outline:3px solid #ffd166;transform:translateY(-2px)}.campaign-mon img{width:82px;height:82px;object-fit:contain;display:block;margin:auto}.campaign-mon span{display:block;margin:.35rem}.type-chip,.type-label{display:inline-block;padding:.15rem .42rem;border-radius:99px;color:#fff;background:#596275;font-size:.7rem;margin:.08rem}.campaign-primary,.campaign-secondary,.campaign-danger,.campaign-reset{border:0;border-radius:10px;padding:.75rem 1rem;font-weight:800;cursor:pointer;margin:1rem .5rem 0 0}.campaign-primary{background:#ffd166;color:#26231a}.campaign-secondary{background:#536dfe;color:white}.campaign-danger{background:#7e214b;color:#fff}.campaign-reset{background:transparent;color:#ff8a8a;border:1px solid #ff8a8a}.badge-grid,.campaign-roster,.mini-team{display:flex;gap:.45rem;flex-wrap:wrap;margin:1rem 0}.badge-orb{width:38px;height:38px;border-radius:50%;display:inline-grid;place-items:center;background:#596275;color:#fff;font-weight:900}.badge-orb.earned{box-shadow:0 0 18px #ffd166}.badge-orb.locked{opacity:.25}.type-fire{background:#ef5350}.type-water{background:#42a5f5}.type-grass{background:#66bb6a}.type-electric{background:#fbc02d}.type-ghost{background:#7e57c2}.type-dark{background:#424242}.type-fairy{background:#ec75a5}.type-steel{background:#78909c}.type-dragon{background:#5c6bc0}.type-rock,.type-ground{background:#9e7d4e}.type-ice{background:#80deea}.type-poison{background:#ab47bc}.type-fighting{background:#d84315}.type-flying{background:#90a4ae}.type-psychic{background:#ec407a}.type-bug{background:#8bc34a}.type-normal{background:#9e9e9e}.master-card h3{margin:.5rem 0}.mini-team{justify-content:center}.mini-team img,.campaign-roster img{width:42px;height:42px;object-fit:contain}@media(max-width:560px){.campaign-shell{padding:.75rem}.campaign-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.campaign-hero{padding:1rem}.campaign-mon img{width:64px;height:64px}}
.draft-tools{display:grid;grid-template-columns:2fr 1fr 1fr;gap:.5rem;margin:.75rem 0}.draft-tools input,.draft-tools select{min-width:0;padding:.65rem;border-radius:8px;border:1px solid rgba(255,255,255,.25);background:rgba(0,0,0,.2);color:inherit}.draft-remove{display:inline-flex;align-items:center;gap:.25rem;border:0;background:transparent;color:inherit;cursor:pointer}.draft-remove img{width:42px;height:42px}.campaign-mon.owned{opacity:.55;cursor:not-allowed}.shadow-aura-active{box-shadow:inset 0 0 80px rgba(114,46,170,.42)}.shadow-aura-indicator{margin:.5rem auto;padding:.55rem 1rem;border:1px solid #b784ff;border-radius:999px;background:rgba(48,16,78,.88);color:#f4eaff;text-align:center;display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap}.shadow-aura-indicator strong{color:#d9b7ff}@media(max-width:560px){.draft-tools{grid-template-columns:1fr}.shadow-aura-indicator{border-radius:12px;font-size:.8rem}}
.campaign-mon strong,.campaign-mon small{display:block}.campaign-mon small{margin-top:.45rem}.master-context,.type-guide{padding:1rem 1.25rem;border:1px solid var(--border-color,rgba(255,255,255,.18));border-radius:16px;background:rgba(20,24,44,.7);margin-bottom:1rem}.master-context h2,.type-guide h3{margin:.2rem 0 .45rem}.type-guide-list{display:flex;flex-wrap:wrap;gap:.5rem;margin:.5rem 0 1rem}.type-guide-chip{padding:.35rem .6rem;border-radius:999px;color:#fff;font-weight:700;font-size:.88rem}.type-guide-empty,.type-guide-disclaimer{margin:.5rem 0 1rem}.type-guide-disclaimer{font-size:.9rem;opacity:.85;font-style:italic}@media(max-width:560px){.master-context,.type-guide{padding:.9rem}.type-guide-chip{font-size:.8rem}}

/* PBA-015 Trainer Avatar Infrastructure — final art is intentionally absent. */
.trainer-avatar{--trainer-size:88px;position:relative;display:grid;place-items:center;inline-size:var(--trainer-size);aspect-ratio:4/5;flex:0 0 auto;overflow:hidden;border:2px solid rgba(255,255,255,.38);border-radius:18px;background:radial-gradient(circle at 35% 20%,rgba(255,255,255,.25),transparent 34%),linear-gradient(145deg,rgba(17,24,39,.94),rgba(38,48,70,.9));box-shadow:0 8px 20px rgba(0,0,0,.3),0 0 14px var(--trainer-accent,rgba(255,209,102,.35));isolation:isolate}.trainer-avatar--small{--trainer-size:48px;border-radius:50%}.trainer-avatar--medium{--trainer-size:88px}.trainer-avatar--large{--trainer-size:144px}.trainer-avatar--circle{aspect-ratio:1;border-radius:50%}.trainer-avatar--super{--trainer-accent:rgba(255,209,102,.7);border-color:#ffd166;background:radial-gradient(circle at 35% 20%,rgba(255,255,255,.34),transparent 34%),linear-gradient(145deg,#5c4b18,#171724)}.trainer-avatar--shadow{--trainer-accent:rgba(183,132,255,.75);border-color:#b784ff;background:radial-gradient(circle at 35% 20%,rgba(205,155,255,.25),transparent 35%),linear-gradient(145deg,#34145a,#10101e)}.trainer-avatar__image{inline-size:100%;block-size:100%;object-fit:cover}.trainer-avatar__fallback{inline-size:100%;block-size:100%;display:grid;place-content:center;text-align:center;gap:.12rem;background:linear-gradient(145deg,color-mix(in srgb,var(--trainer-accent,#6b7280) 60%,transparent),rgba(8,12,24,.75))}.trainer-avatar__type-icon{font-size:clamp(1rem,3vw,2rem);line-height:1}.trainer-avatar__initials{font-family:Outfit,system-ui,sans-serif;font-size:clamp(.7rem,2vw,1.15rem);font-weight:900;letter-spacing:.08em;color:#fff;text-shadow:0 2px 8px #000}.trainer-avatar.type-fire{--trainer-accent:#ef5350}.trainer-avatar.type-water{--trainer-accent:#42a5f5}.trainer-avatar.type-electric{--trainer-accent:#fbc02d}.trainer-avatar.type-grass{--trainer-accent:#66bb6a}.trainer-avatar.type-ice{--trainer-accent:#80deea}.trainer-avatar.type-fighting{--trainer-accent:#d84315}.trainer-avatar.type-poison{--trainer-accent:#ab47bc}.trainer-avatar.type-ground{--trainer-accent:#9e7d4e}.trainer-avatar.type-flying{--trainer-accent:#90a4ae}.trainer-avatar.type-psychic{--trainer-accent:#ec407a}.trainer-avatar.type-bug{--trainer-accent:#8bc34a}.trainer-avatar.type-rock{--trainer-accent:#9e7d4e}.trainer-avatar.type-ghost{--trainer-accent:#7e57c2}.trainer-avatar.type-dragon{--trainer-accent:#5c6bc0}.trainer-avatar.type-dark{--trainer-accent:#616161}.trainer-avatar.type-steel{--trainer-accent:#78909c}.trainer-avatar.type-fairy{--trainer-accent:#ec75a5}.trainer-avatar.type-normal{--trainer-accent:#9e9e9e}.master-card{display:flex;flex-direction:column;align-items:center;min-block-size:310px}.master-card .trainer-avatar{margin:.1rem auto .55rem}.master-card:hover .trainer-avatar{transform:scale(1.035);box-shadow:0 10px 24px rgba(0,0,0,.34),0 0 18px var(--trainer-accent,rgba(255,209,102,.42))}.master-context{display:flex;align-items:center;gap:1.25rem}.master-context__copy{min-width:0}.reward-trainer-context{display:flex;align-items:center;gap:.8rem;margin-top:1rem;text-align:left}.reward-trainer-context p{margin:.15rem 0}.shadow-reveal .trainer-avatar,.campaign-hero .trainer-avatar--super{margin:.75rem auto}.battle-opponent-trainer{display:inline-flex;align-items:center;gap:.4rem;min-width:0;font-size:.76rem;font-weight:800;color:#f8fafc}.battle-opponent-trainer__name{max-width:8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:560px){.trainer-avatar--medium{--trainer-size:72px}.trainer-avatar--large{--trainer-size:104px}.master-card{min-block-size:286px}.master-context{flex-direction:column;text-align:center;gap:.65rem}.reward-trainer-context{justify-content:center;text-align:center}.battle-opponent-trainer__name{display:none}}@media(prefers-reduced-motion:reduce){.master-card .trainer-avatar{transition:none!important}}

.campaign-endgame{margin:1.5rem 0;padding:1.25rem;border:1px solid #d4af37;border-radius:18px;background:linear-gradient(135deg,#19130a,#29200d)}.endgame-super{display:flex;gap:1rem;align-items:center}.endgame-super h2{color:#f6d365;margin:.2rem 0}.endgame-trials{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.endgame-trial{padding:1rem;border-radius:12px;background:#111827;border:1px solid #6b5520}.endgame-trial button{display:block;margin-top:.75rem}@media(max-width:600px){.endgame-super{align-items:flex-start}.endgame-trials{grid-template-columns:1fr}.campaign-endgame{padding:1rem}}
/* PBA-015F — scoped endgame boss presentation. */
.endgame-super{align-items:stretch;gap:1.5rem}.endgame-super__portrait{display:grid;place-items:center;min-width:190px;background:radial-gradient(circle,rgba(255,209,102,.2),transparent 68%)}.endgame-super__portrait .trainer-avatar{--trainer-size:180px}.endgame-super__content{min-width:0;flex:1}.boss-difficulty{display:inline-block;margin:.45rem 0;padding:.3rem .65rem;border:1px solid #f6d365;border-radius:999px;color:#fff0ae;background:rgba(246,211,101,.12);letter-spacing:.06em}.opponent-team-preview{margin:1rem 0}.opponent-team-preview .eyebrow{margin-bottom:.45rem}.opponent-team-preview__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem}.opponent-preview-card{min-width:0;padding:.6rem;border:1px solid rgba(255,209,102,.42);border-radius:12px;background:rgba(9,12,26,.58);text-align:center}.opponent-preview-card img{width:64px;height:64px;object-fit:contain;display:block;margin:0 auto .25rem}.opponent-preview-card strong,.opponent-preview-card small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.opponent-preview-card span{display:block;margin:.3rem 0}.opponent-team-preview--compact{max-width:560px}.campaign-preparation{margin-bottom:1rem;padding:1.25rem;border:1px solid rgba(255,255,255,.2);border-radius:18px;background:rgba(20,24,44,.7)}.campaign-preparation--super{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1.25rem;align-items:center;border-color:#d4af37;background:radial-gradient(circle at 12% 10%,rgba(246,211,101,.18),transparent 38%),linear-gradient(135deg,#19130a,#151827)}.campaign-preparation--super .trainer-avatar{--trainer-size:180px}.campaign-preparation__copy{min-width:0}.campaign-preparation__copy h2{margin:.2rem 0}.campaign-preparation--super .opponent-team-preview{grid-column:2}.campaign-preparation--trial .opponent-team-preview{margin-bottom:0}@media(max-width:600px){.endgame-super{flex-direction:column;gap:.75rem}.endgame-super__portrait{min-width:0}.endgame-super__portrait .trainer-avatar,.campaign-preparation--super .trainer-avatar{--trainer-size:136px}.opponent-preview-card{padding:.45rem}.opponent-preview-card img{width:54px;height:54px}.opponent-preview-card .type-chip{font-size:.62rem;padding:.12rem .3rem}.campaign-preparation{padding:1rem}.campaign-preparation--super{grid-template-columns:1fr;text-align:center}.campaign-preparation--super .trainer-avatar{margin:auto}.campaign-preparation--super .opponent-team-preview{grid-column:auto}.campaign-preparation--trial{text-align:center}.opponent-team-preview--compact{max-width:none}}
/* PBA-015G — elite trial hierarchy within the existing endgame grid. */
.endgame-trials{grid-template-columns:repeat(2,minmax(0,1fr))}.endgame-trial{display:flex;flex-direction:column}.endgame-trial .trial-difficulty{display:block;margin:.25rem 0 .6rem;color:#f6d365;font-weight:800;letter-spacing:.04em}.endgame-trial>strong{margin-top:auto}.endgame-trial--titans{border-color:#bd8b3d;background:linear-gradient(145deg,#21170c,#111827)}.endgame-trial--celestial{border-color:#8f83d7;background:linear-gradient(145deg,#171431,#111827)}@media(max-width:600px){.endgame-trials{grid-template-columns:1fr}}
/* PBA-015H — scoped Shadow finale presentation. */
.shadow-spotlight{display:flex;gap:1.5rem;align-items:stretch;margin-bottom:1rem;padding:1.25rem;border:1px solid #b784ff;border-radius:18px;background:radial-gradient(circle at 10% 10%,rgba(183,132,255,.24),transparent 40%),linear-gradient(135deg,#30114d,#120f24);box-shadow:0 0 30px rgba(183,132,255,.22)}.shadow-spotlight__portrait{display:grid;place-items:center;min-width:190px}.shadow-spotlight .trainer-avatar,.campaign-preparation--shadow>.trainer-avatar{--trainer-size:180px}.shadow-spotlight__content{min-width:0;flex:1}.endgame-super--secondary{opacity:.55;filter:saturate(.65);transform:scale(.98);transform-origin:center}.shadow-aura-callout{display:flex;gap:.6rem;align-items:baseline;flex-wrap:wrap;margin:.75rem 0;padding:.65rem .8rem;border:1px solid #d9b7ff;border-radius:12px;background:rgba(54,18,83,.7);color:#f4eaff}.shadow-aura-callout strong{color:#e5c7ff;letter-spacing:.07em}.campaign-preparation--shadow{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1.25rem;align-items:center;border-color:#b784ff;background:radial-gradient(circle at 12% 10%,rgba(183,132,255,.25),transparent 38%),linear-gradient(135deg,#2f104d,#10101e)}.campaign-preparation--shadow .opponent-team-preview{grid-column:2}.shadow-team-preview .opponent-preview-card{border-color:rgba(183,132,255,.5)}@media(max-width:600px){.shadow-spotlight{flex-direction:column;gap:.75rem}.shadow-spotlight__portrait{min-width:0}.shadow-spotlight .trainer-avatar,.campaign-preparation--shadow>.trainer-avatar{--trainer-size:136px}.campaign-preparation--shadow{grid-template-columns:1fr;text-align:center}.campaign-preparation--shadow>.trainer-avatar{margin:auto}.campaign-preparation--shadow .opponent-team-preview{grid-column:auto}.shadow-aura-callout{justify-content:center;text-align:center}}

/* PBA-015I Final Stand */
.shadow-reinforcements,.final-stand-army{padding:1rem;border:1px solid #c98cff;border-radius:16px;background:linear-gradient(135deg,#211036,#0e1629);margin:1rem 0}.final-stand-rule{padding:.85rem;border-left:4px solid #d79bff;background:rgba(95,35,126,.35);display:grid;gap:.35rem}.guest-card{border-color:#d69cff!important;background:rgba(83,30,112,.35)!important}.guest-card small{color:#efccff}.shadow-reinforcement-count{font-weight:800;color:#efccff}.final-stand-army{display:flex;gap:1rem;flex-wrap:wrap}.final-stand-army strong{color:#f4eaff}.final-stand-army-grid{max-height:58vh;overflow-y:auto;align-content:start}@media(max-width:600px){.final-stand-army{display:grid;gap:.45rem}.final-stand-army-grid{max-height:none}.shadow-reinforcements h3{font-size:1rem}}

/* ==========================================================================
   CAMPAIGN TRAINER CARDS — DEFEATED VS UNDEFEATED DIFFERENTIATION
   ========================================================================== */
.master-card {
  position: relative;
  overflow: hidden;
  transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1),
              box-shadow 0.25s cubic-bezier(0.4, 0, 0.2, 1),
              border-color 0.25s ease;
}

.master-card-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  margin-bottom: 0.45rem;
  width: 100%;
}

.master-type-row {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
}

.master-status-row {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
}

.master-status-tag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  padding: 0.22rem 0.75rem;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  min-width: 116px;
  box-sizing: border-box;
}

.master-status-tag.completed {
  background: rgba(255, 209, 102, 0.18);
  border: 1px solid rgba(255, 209, 102, 0.55);
  color: #ffd166;
  box-shadow: 0 0 8px rgba(255, 209, 102, 0.2);
}

.master-status-tag.pending {
  background: rgba(255, 107, 107, 0.2);
  border: 1px solid rgba(255, 107, 107, 0.65);
  color: #ff8585;
  box-shadow: 0 0 10px rgba(255, 107, 107, 0.25);
  animation: pulsePendingTag 2.2s infinite ease-in-out;
}

@keyframes pulsePendingTag {
  0%, 100% { opacity: 0.9; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.04); box-shadow: 0 0 14px rgba(255, 107, 107, 0.5); }
}

/* DEFEATED TRAINERS (Insígnia Conquistada) */
.master-card.completed {
  border: 1.5px solid rgba(255, 209, 102, 0.45) !important;
  background: linear-gradient(165deg, rgba(22, 28, 44, 0.96), rgba(14, 17, 28, 0.98)) !important;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45), 0 0 16px rgba(255, 209, 102, 0.12), inset 0 1px 0 rgba(255, 209, 102, 0.2) !important;
}

.master-card.completed::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, transparent, #ffd166, transparent);
  opacity: 0.9;
}

.master-card.completed:hover {
  border-color: #ffd166 !important;
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.5), 0 0 24px rgba(255, 209, 102, 0.32) !important;
  transform: translateY(-4px);
}

.master-card.completed .trainer-avatar {
  border-color: #ffd166 !important;
  box-shadow: 0 0 16px rgba(255, 209, 102, 0.45), 0 6px 16px rgba(0, 0, 0, 0.35) !important;
}

/* UNDEFEATED TRAINERS (Desafio Aberto / Pendente) */
.master-card:not(.completed),
.master-card.pending {
  border: 1.5px solid rgba(255, 107, 107, 0.6) !important;
  background: linear-gradient(165deg, rgba(38, 22, 46, 0.96), rgba(18, 14, 26, 0.98)) !important;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45), 0 0 18px rgba(255, 107, 107, 0.2) !important;
}

.master-card:not(.completed)::before,
.master-card.pending::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, transparent, #ff6b6b, transparent);
  opacity: 0.9;
}

.master-card:not(.completed):hover,
.master-card.pending:hover {
  border-color: #ff6b6b !important;
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.55), 0 0 26px rgba(255, 107, 107, 0.4) !important;
  transform: translateY(-4px);
}

.master-card:not(.completed) .trainer-avatar,
.master-card.pending .trainer-avatar {
  border-color: rgba(255, 107, 107, 0.8) !important;
  box-shadow: 0 0 16px rgba(255, 107, 107, 0.4), 0 6px 16px rgba(0, 0, 0, 0.4) !important;
}

/* Badge Orb on Cards */
.master-card .badge-orb {
  width: 28px;
  height: 28px;
  font-size: 0.85rem;
  flex-shrink: 0;
}

.master-card .badge-orb.earned {
  box-shadow: 0 0 16px #ffd166, 0 0 6px #fff !important;
  opacity: 1 !important;
}

.master-card .badge-orb.locked {
  opacity: 0.3 !important;
  filter: grayscale(0.7) !important;
  box-shadow: none !important;
}

/* Badge name with icon */
.master-badge-name {
  font-size: 0.82rem;
  margin: 0.2rem 0 0.45rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
}

.master-badge-name.earned {
  color: #ffd166;
  font-weight: 700;
}

.master-badge-name.locked {
  color: #94a3b8;
  opacity: 0.85;
}

/* Buttons: Rematch vs Challenge */
.campaign-btn {
  border: 0;
  border-radius: 10px;
  padding: 0.7rem 1.1rem;
  font-weight: 800;
  font-size: 0.85rem;
  letter-spacing: 0.04em;
  cursor: pointer;
  margin: 0.75rem auto 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  width: 92%;
  max-width: 175px;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

.campaign-btn-rematch {
  background: linear-gradient(135deg, #25334d, #162033) !important;
  border: 1px solid rgba(147, 197, 253, 0.32) !important;
  color: #93c5fd !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3) !important;
}

.campaign-btn-rematch:hover {
  background: linear-gradient(135deg, #324466, #1f2d47) !important;
  color: #bfdbfe !important;
  border-color: rgba(147, 197, 253, 0.6) !important;
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4) !important;
}

.campaign-btn-challenge {
  background: linear-gradient(135deg, #ff6b6b, #ee5253) !important;
  border: 0 !important;
  color: #ffffff !important;
  font-weight: 900 !important;
  box-shadow: 0 4px 16px rgba(238, 82, 83, 0.48) !important;
  animation: challengeBtnPulse 2.5s infinite ease-in-out;
}

.campaign-btn-challenge:hover {
  background: linear-gradient(135deg, #ff5252, #e84118) !important;
  transform: translateY(-2px) scale(1.03);
  box-shadow: 0 6px 22px rgba(238, 82, 83, 0.75) !important;
}

@keyframes challengeBtnPulse {
  0%, 100% {
    box-shadow: 0 4px 16px rgba(238, 82, 83, 0.48);
  }
  50% {
    box-shadow: 0 4px 26px rgba(238, 82, 83, 0.8), 0 0 12px rgba(255, 107, 107, 0.45);
    transform: scale(1.02);
  }
}

/* ==========================================================================
   CAMPAIGN PICKER — START BATTLE BUTTON & INTERACTIVE FEEDBACK
   ========================================================================== */

.picker-action-bar {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
  margin: 1.5rem auto 0;
  max-width: 440px;
  width: 100%;
  cursor: pointer;
}

.picker-status-hint {
  font-size: 0.88rem;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.45rem 1rem;
  border-radius: 999px;
  width: 100%;
  text-align: center;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.picker-status-hint.incomplete {
  background: rgba(255, 255, 255, 0.07);
  color: #94a3b8;
  border: 1px solid rgba(255, 255, 255, 0.12);
}

.picker-status-hint.complete {
  background: rgba(34, 197, 94, 0.18);
  color: #4ade80;
  border: 1px solid rgba(34, 197, 94, 0.45);
  box-shadow: 0 0 14px rgba(34, 197, 94, 0.25);
}

.picker-status-hint.warning-pulse {
  background: rgba(239, 68, 68, 0.25) !important;
  color: #fca5a5 !important;
  border-color: rgba(239, 68, 68, 0.6) !important;
  box-shadow: 0 0 16px rgba(239, 68, 68, 0.4) !important;
  animation: shakeBtn 0.45s ease-in-out;
}

/* Button States */
#startCampaignBattle {
  width: 100%;
  max-width: 360px;
  font-size: 1rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 0.85rem 1.4rem;
  border-radius: 12px;
  margin: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Disabled State */
.campaign-primary:disabled,
.campaign-secondary:disabled,
.campaign-danger:disabled,
#startCampaignBattle:disabled {
  background: rgba(255, 255, 255, 0.08) !important;
  color: rgba(255, 255, 255, 0.35) !important;
  border: 1px solid rgba(255, 255, 255, 0.12) !important;
  box-shadow: none !important;
  cursor: not-allowed !important;
  transform: none !important;
  filter: grayscale(0.5);
  opacity: 0.55;
}

/* Ready to Battle Enabled State */
.campaign-primary:not(:disabled),
#startCampaignBattle:not(:disabled) {
  background: linear-gradient(135deg, #ffd166, #ffb703) !important;
  color: #261f0a !important;
  border: 0;
  font-weight: 900;
  cursor: pointer;
  box-shadow: 0 4px 20px rgba(255, 209, 102, 0.5), 0 0 10px rgba(255, 183, 3, 0.35);
}

.campaign-primary:not(:disabled):hover,
#startCampaignBattle:not(:disabled):hover {
  transform: translateY(-2px) scale(1.02);
  box-shadow: 0 6px 26px rgba(255, 209, 102, 0.7), 0 0 16px rgba(255, 183, 3, 0.5);
}

.campaign-primary:not(:disabled):active,
#startCampaignBattle:not(:disabled):active {
  transform: translateY(1px) scale(0.98);
}

.campaign-primary.ready-to-battle,
#startCampaignBattle.ready-to-battle {
  animation: battleReadyPulse 2s infinite ease-in-out;
}

@keyframes battleReadyPulse {
  0%, 100% {
    box-shadow: 0 4px 20px rgba(255, 209, 102, 0.5);
    transform: scale(1);
  }
  50% {
    box-shadow: 0 6px 28px rgba(255, 209, 102, 0.8), 0 0 16px rgba(255, 209, 102, 0.6);
    transform: scale(1.025);
  }
}

/* Loading / Launching State */
.campaign-primary.is-loading,
.campaign-danger.is-loading,
#startCampaignBattle.is-loading {
  background: linear-gradient(135deg, #f59e0b, #d97706) !important;
  color: #ffffff !important;
  box-shadow: 0 0 28px rgba(245, 158, 11, 0.75) !important;
  cursor: wait !important;
  pointer-events: none;
  opacity: 0.95;
  transform: scale(0.99);
}

/* Shake Animation */
@keyframes shakeBtn {
  0%, 100% { transform: translateX(0); }
  20%, 60% { transform: translateX(-8px); }
  40%, 80% { transform: translateX(8px); }
}

.btn-shake {
  animation: shakeBtn 0.45s ease-in-out !important;
}

/* Battle Launch Flash Transition Overlay */
.battle-launch-overlay {
  position: fixed;
  inset: 0;
  background: radial-gradient(circle at center, rgba(255, 255, 255, 0.9) 0%, rgba(255, 209, 102, 0.5) 45%, rgba(10, 12, 24, 0.95) 100%);
  z-index: 99999;
  pointer-events: none;
  animation: battleLaunchAnim 0.7s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes battleLaunchAnim {
  0% { opacity: 0; transform: scale(0.92); }
  35% { opacity: 0.95; transform: scale(1); }
  100% { opacity: 0; transform: scale(1.06); }
}