/* Styles owned by the gyms section. */
.gym-zone-grid {
  display: grid;
  gap: var(--zone-card-gap);
  grid-template-columns: repeat(3, var(--zone-card-width));
  justify-content: center;
  align-items: start;
}

.gym-city-grid {
  display: grid;
  gap: var(--zone-card-gap);
  grid-template-columns: repeat(3, var(--zone-card-width));
  justify-content: center;
  align-items: start;
}

.gym-zone-card {
  --gym-zone-card-glow: rgba(25, 125, 115, 0.18);
  --gym-zone-card-accent: rgba(25, 125, 115, 0.24);
  --gym-zone-card-top: rgba(255, 255, 255, 0.58);
  --gym-zone-card-bottom: rgba(232, 244, 250, 0.48);
  --gym-zone-card-title-color: #28514b;
  container-type: inline-size;
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-rows: auto auto auto;
  justify-items: center;
  align-items: center;
  gap: 7px;
  padding: 14px 15.5px 12.5px;
  width: 100%;
  min-height: 188px;
  border-radius: var(--radius-md);
  border: 1px solid var(--border-soft);
  background:
    linear-gradient(160deg, var(--gym-zone-card-top), var(--gym-zone-card-bottom)),
    linear-gradient(135deg, var(--gym-zone-card-accent), transparent 72%);
  box-shadow: none;
  cursor: pointer;
  text-align: center;
  text-decoration: none;
  color: inherit;
  transform: translateZ(0);
  backface-visibility: hidden;
  transition: var(--interactive-transition);
}

.gym-zone-card::before {
  content: "";
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 140ms ease;
  pointer-events: none;
}

.gym-zone-card::before {
  background: linear-gradient(160deg, rgba(255, 255, 255, 0.26), rgba(255, 255, 255, 0.08) 48%, transparent 72%);
}

.gym-zone-card:hover::before {
  opacity: 1;
}

.gym-zone-card:focus-visible::before {
  opacity: 1;
}

.gym-zone-card::after {
  content: "";
  position: absolute;
  inset: auto -30px -50px auto;
  width: 140px;
  height: 140px;
  background: radial-gradient(circle, var(--gym-zone-card-glow), transparent 70%);
  pointer-events: none;
}

.gym-zone-card:hover {
  transform: translateY(-2px) translateZ(0);
  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.64),
    var(--shadow-soft-hover),
    0 6.5px 12px rgba(61, 96, 128, 0.12);
  filter: var(--interactive-hover-filter);
}

.gym-zone-card:focus-visible {
  transform: translateY(-2px) translateZ(0);
  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.64),
    var(--shadow-soft-hover),
    0 6.5px 12px rgba(61, 96, 128, 0.12);
  filter: var(--interactive-hover-filter);
}

.gym-zone-card:focus-visible {
  outline: 2px solid rgba(255, 255, 255, 0.92);
  outline-offset: 2px;
}

.gym-zone-card-title {
  position: relative;
  z-index: 1;
}

.gym-zone-card-media {
  position: relative;
  z-index: 1;
}

.gym-zone-card-types {
  position: relative;
  z-index: 1;
}

.gym-zone-card-title {
  margin: 0;
  width: 100%;
  color: var(--gym-zone-card-title-color);
  font-size: 20px;
  font-family: var(--game-font);
  font-weight: 700;
  letter-spacing: 0;
  line-height: 1.05;
  white-space: nowrap;
  text-shadow:
    0 1px 0 rgba(255, 255, 255, 0.4),
    1px 0 0 rgba(255, 255, 255, 0.35),
    -1px 0 0 rgba(255, 255, 255, 0.35),
    0 0 6px rgba(255, 255, 255, 0.16),
    0 2px 4px rgba(31, 37, 40, 0.18);
}

.gym-zone-card-media {
  display: grid;
  place-items: center;
  align-self: center;
  width: 100%;
  margin-top: -2px;
  border-radius: var(--radius-card);
  border: 1px solid rgba(139, 176, 210, 0.2);
  background: rgba(255, 255, 255, 0.4);
}

.gym-zone-card-image {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.gym-zone-card p {
  margin: 0;
  color: var(--text-soft);
}

.gym-zone-card-types {
  display: flex;
  justify-content: center;
  width: 100%;
  margin-top: -2px;
}

.gym-zone-card-description {
  position: relative;
  z-index: 1;
  width: 100%;
  background: rgba(255, 251, 244, 0.7);
  border-radius: 0;
  padding: 5px 10px 6px;
  font-size: 13px;
  line-height: 1.35;
  color: var(--text-soft);
  margin-top: -2px;
  white-space: pre-line;
}

@media (max-width: 1150px) {
.gym-zone-grid {
    grid-template-columns: repeat(2, var(--zone-card-width));
  }

.gym-city-grid {
    grid-template-columns: repeat(2, var(--zone-card-width));
  }

.gym-zone-card {
    padding: clamp(12px, 1.4vw, 16px) clamp(13px, 1.56vw, 18px) clamp(11px, 1.22vw, 14px);
  }

}

@media (max-width: 680px) {
.gym-zone-card {
    aspect-ratio: auto;
  }

.gym-zone-grid {
    grid-template-columns: minmax(0, min(var(--pokemon-card-width), 100%));
    justify-content: center;
  }

.gym-city-grid {
    grid-template-columns: minmax(0, min(var(--pokemon-card-width), 100%));
    justify-content: center;
  }

}
.gym-scene-stack {
  display: grid;
  gap: 34px;
}

.gym-description-panel {
  --pokemon-card-width: 341px;
  box-sizing: border-box;
  display: grid;
  justify-self: center;
  max-width: 100%;
  padding: 20px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-panel);
  background: var(--surface-panel);
}

.gym-team-grid {
  --pokemon-card-width: 341px;
  box-sizing: border-box;
  display: grid;
  justify-self: center;
  max-width: 100%;
  padding: 20px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-panel);
  background: var(--surface-panel);
}

.gym-description-panel {
  width: fit-content;
  max-width: 100%;
  padding-left: 30px;
  padding-right: 30px;
}

.gym-team-grid {
  width: min(var(--section-width), 100%);
  overflow: hidden;
}

.gym-team-grid {
  grid-template-columns: repeat(3, var(--pokemon-card-width));
  justify-content: center;
  align-items: stretch;
}

@media (max-width: 1150px) {
.gym-team-grid {
    width: min(var(--section-width), 100%);
    padding: 16px;
    align-items: stretch;
  }

.gym-description-panel {
    padding: 16px;
  }

}

@media (max-width: 680px) {
.gym-team-grid {
    padding: 12px;
  }

.gym-description-panel {
    padding: 12px;
  }

}

.gym-reward-list {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
}
.gym-city-card {
  --gym-theme-top: rgba(255, 255, 255, 0.84);
  --gym-theme-bottom: rgba(235, 227, 212, 0.92);
  --gym-theme-accent-a: rgba(147, 118, 71, 0.34);
  --gym-theme-accent-b: rgba(207, 188, 145, 0.3);
  --gym-zone-card-glow: var(--gym-theme-accent-a);
  --gym-zone-card-accent: var(--gym-theme-accent-b);
  --gym-zone-card-top: var(--gym-theme-top);
  --gym-zone-card-bottom: var(--gym-theme-bottom);
  --gym-zone-card-title-color: #6e5633;
}
.gym-section-title {
  margin: 0;
  color: var(--text-soft);
  font-size: 14px;
  font-weight: 700;
}

.gym-leader-card {
  grid-template-columns: minmax(0, 1fr);
  gap: 24px;
}
.gym-leader-top {
  display: grid;
  grid-template-columns: var(--trainer-sprite-width) minmax(0, 1fr);
  align-items: stretch;
  gap: 22px;
  min-width: 0;
}
.gym-leader-media {
  display: grid;
  place-items: end center;
  min-height: var(--trainer-sprite-height);
}
.gym-leader-image {
  width: var(--trainer-sprite-width);
  height: var(--trainer-sprite-height);
  object-fit: contain;
  object-position: center bottom;
}
.gym-leader-content {
  display: grid;
  align-content: start;
  gap: 18px;
  min-width: 0;
}
.gym-rewards-panel,
.gym-limitations-panel {
  display: grid;
  gap: 10px;
  min-width: 0;
}
.gym-leader-heading {
  display: grid;
  gap: 4px;
}
.gym-leader-name {
  margin: 10px 0 0;
  justify-self: center;
  font-size: 22px;
}
.gym-leader-flavor {
  margin: 0;
  color: var(--text-soft);
  font-size: 14px;
  justify-self: center;
  line-height: 2;
}
.gym-badge-row {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: max-content;
  max-width: 100%;
  padding: 8px 12px;
  border: 1px solid rgba(31, 37, 40, 0.12);
  border-radius: var(--radius-card);
  background: rgba(255, 255, 255, 0.48);
  font-size: 13px;
  font-weight: 700;
  text-align: center;
}

.gym-theme-panel {
  --gym-theme-top: rgba(255, 255, 255, 0.34);
  --gym-theme-bottom: rgba(235, 227, 212, 0.74);
  --gym-theme-accent-a: rgba(147, 118, 71, 0.2);
  --gym-theme-accent-b: rgba(207, 188, 145, 0.18);
  --shadow: 0 18px 45px rgba(31, 37, 40, 0.13);
  box-sizing: border-box;
  display: grid;
  width: min(var(--section-width), 100%);
  max-width: 100%;
  justify-self: center;
  padding: 12px;
  border: 1px solid rgba(255, 255, 255, 0.48);
  border-radius: 5px;
  background:
    linear-gradient(135deg, var(--gym-theme-top), var(--gym-theme-bottom)),
    linear-gradient(145deg, var(--gym-theme-accent-a), var(--gym-theme-accent-b));
  box-shadow: var(--shadow);
}
.gym-theme-panel-roccia {
  --gym-theme-bottom: rgba(242, 232, 211, 0.78);
  --gym-theme-accent-a: rgba(143, 117, 83, 0.26);
  --gym-theme-accent-b: rgba(199, 174, 132, 0.22);
  --gym-zone-card-title-color: #7a5c3a;
  --gym-button-border: rgba(122, 92, 58, 0.4);
  --gym-button-bg: #ede3d4;
  --gym-button-color: #6e4f2e;
  --gym-button-lip: rgba(100, 72, 38, 0.22);
  --gym-button-drop: rgba(100, 72, 38, 0.14);
}
.gym-theme-panel-acqua {
  --gym-theme-bottom: rgba(230, 248, 251, 0.78);
  --gym-theme-accent-a: rgba(42, 139, 178, 0.24);
  --gym-theme-accent-b: rgba(104, 199, 204, 0.2);
  --gym-zone-card-title-color: #156a87;
  --gym-button-border: rgba(21, 106, 135, 0.4);
  --gym-button-bg: #d4edf5;
  --gym-button-color: #0d5a75;
  --gym-button-lip: rgba(13, 90, 117, 0.22);
  --gym-button-drop: rgba(13, 90, 117, 0.14);
}
.gym-theme-panel-elettro {
  --gym-theme-bottom: rgba(255, 248, 213, 0.78);
  --gym-theme-accent-a: rgba(232, 184, 32, 0.26);
  --gym-theme-accent-b: rgba(247, 219, 86, 0.2);
  --gym-zone-card-title-color: #7a7200;
  --gym-button-border: rgba(122, 114, 0, 0.4);
  --gym-button-bg: #f5edc0;
  --gym-button-color: #6a6200;
  --gym-button-lip: rgba(100, 92, 0, 0.22);
  --gym-button-drop: rgba(100, 92, 0, 0.14);
}
.gym-theme-panel-erba {
  --gym-theme-bottom: rgba(239, 248, 231, 0.76);
  --gym-theme-accent-a: rgba(77, 145, 79, 0.24);
  --gym-theme-accent-b: rgba(189, 221, 134, 0.2);
  --gym-zone-card-title-color: #3a723a;
  --gym-button-border: rgba(58, 114, 58, 0.4);
  --gym-button-bg: #d4edd4;
  --gym-button-color: #2e622e;
  --gym-button-lip: rgba(40, 90, 40, 0.22);
  --gym-button-drop: rgba(40, 90, 40, 0.14);
}
.gym-theme-panel-psico {
  --gym-theme-bottom: rgba(249, 232, 246, 0.78);
  --gym-theme-accent-a: rgba(184, 88, 160, 0.24);
  --gym-theme-accent-b: rgba(224, 151, 204, 0.2);
  --gym-zone-card-title-color: #9a4a80;
  --gym-button-border: rgba(154, 74, 128, 0.4);
  --gym-button-bg: #f0d8ea;
  --gym-button-color: #8a3a70;
  --gym-button-lip: rgba(120, 50, 100, 0.22);
  --gym-button-drop: rgba(120, 50, 100, 0.14);
}
.gym-theme-panel-veleno {
  --gym-theme-bottom: rgba(241, 235, 248, 0.76);
  --gym-theme-accent-a: rgba(103, 80, 143, 0.24);
  --gym-theme-accent-b: rgba(179, 145, 199, 0.18);
  --gym-zone-card-title-color: #6a3a8a;
  --gym-button-border: rgba(106, 58, 138, 0.4);
  --gym-button-bg: #e0d8f0;
  --gym-button-color: #5a2e7a;
  --gym-button-lip: rgba(80, 40, 110, 0.22);
  --gym-button-drop: rgba(80, 40, 110, 0.14);
}
.gym-theme-panel-fuoco {
  --gym-theme-bottom: rgba(252, 235, 223, 0.78);
  --gym-theme-accent-a: rgba(217, 101, 59, 0.24);
  --gym-theme-accent-b: rgba(238, 162, 86, 0.2);
  --gym-zone-card-title-color: #b8451a;
  --gym-button-border: rgba(184, 69, 26, 0.4);
  --gym-button-bg: #f5ddd0;
  --gym-button-color: #a83510;
  --gym-button-lip: rgba(150, 50, 15, 0.22);
  --gym-button-drop: rgba(150, 50, 15, 0.14);
}
.gym-theme-panel-terra {
  --gym-theme-bottom: rgba(250, 243, 224, 0.78);
  --gym-theme-accent-a: rgba(195, 151, 76, 0.24);
  --gym-theme-accent-b: rgba(227, 197, 121, 0.18);
  --gym-zone-card-title-color: #8a7a3a;
  --gym-button-border: rgba(138, 122, 58, 0.4);
  --gym-button-bg: #ede5c8;
  --gym-button-color: #7a6a2a;
  --gym-button-lip: rgba(110, 96, 38, 0.22);
  --gym-button-drop: rgba(110, 96, 38, 0.14);
}
.gym-theme-panel-ghiaccio {
  --gym-theme-bottom: rgba(232, 248, 250, 0.78);
  --gym-theme-accent-a: rgba(111, 184, 202, 0.24);
  --gym-theme-accent-b: rgba(179, 224, 231, 0.2);
}
.gym-theme-panel-lotta {
  --gym-theme-bottom: rgba(249, 232, 224, 0.78);
  --gym-theme-accent-a: rgba(174, 82, 61, 0.26);
  --gym-theme-accent-b: rgba(221, 142, 105, 0.2);
}
.gym-theme-panel-spettro {
  --gym-theme-bottom: rgba(235, 232, 247, 0.78);
  --gym-theme-accent-a: rgba(82, 73, 132, 0.26);
  --gym-theme-accent-b: rgba(145, 121, 183, 0.2);
}
.gym-theme-panel-drago {
  --gym-theme-bottom: rgba(233, 236, 252, 0.78);
  --gym-theme-accent-a: rgba(78, 93, 185, 0.26);
  --gym-theme-accent-b: rgba(114, 168, 207, 0.2);
}
.gym-theme-panel-superquattro {
  --gym-theme-bottom: rgba(232, 239, 252, 0.78);
  --gym-theme-accent-a: rgba(58, 88, 172, 0.28);
  --gym-theme-accent-b: rgba(130, 107, 188, 0.24);
  --gym-zone-card-title-color: #3a5090;
}
.gym-theme-panel-campione {
  --gym-theme-bottom: rgba(226, 241, 252, 0.8);
  --gym-theme-accent-a: rgba(37, 105, 183, 0.34);
  --gym-theme-accent-b: rgba(96, 176, 222, 0.26);
  --gym-zone-card-title-color: #1a5a8a;
  background:
    linear-gradient(135deg, var(--gym-theme-top), var(--gym-theme-bottom)),
    linear-gradient(145deg, var(--gym-theme-accent-a), var(--gym-theme-accent-b));
}
.gym-city-card.gym-theme-panel-roccia {
  --gym-theme-bottom: rgba(242, 232, 211, 0.92);
  --gym-theme-accent-a: rgba(143, 117, 83, 0.36);
  --gym-theme-accent-b: rgba(199, 174, 132, 0.3);
}
.gym-city-card.gym-theme-panel-acqua {
  --gym-theme-bottom: rgba(230, 248, 251, 0.92);
  --gym-theme-accent-a: rgba(42, 139, 178, 0.34);
  --gym-theme-accent-b: rgba(104, 199, 204, 0.28);
}
.gym-city-card.gym-theme-panel-elettro {
  --gym-theme-bottom: rgba(255, 248, 213, 0.92);
  --gym-theme-accent-a: rgba(232, 184, 32, 0.34);
  --gym-theme-accent-b: rgba(247, 219, 86, 0.28);
}
.gym-city-card.gym-theme-panel-erba {
  --gym-theme-bottom: rgba(239, 248, 231, 0.91);
  --gym-theme-accent-a: rgba(77, 145, 79, 0.34);
  --gym-theme-accent-b: rgba(189, 221, 134, 0.28);
}
.gym-city-card.gym-theme-panel-psico {
  --gym-theme-bottom: rgba(249, 232, 246, 0.92);
  --gym-theme-accent-a: rgba(184, 88, 160, 0.34);
  --gym-theme-accent-b: rgba(224, 151, 204, 0.28);
}
.gym-city-card.gym-theme-panel-veleno {
  --gym-theme-bottom: rgba(241, 235, 248, 0.91);
  --gym-theme-accent-a: rgba(103, 80, 143, 0.34);
  --gym-theme-accent-b: rgba(179, 145, 199, 0.27);
}
.gym-city-card.gym-theme-panel-fuoco {
  --gym-theme-bottom: rgba(252, 235, 223, 0.92);
  --gym-theme-accent-a: rgba(217, 101, 59, 0.34);
  --gym-theme-accent-b: rgba(238, 162, 86, 0.28);
}
.gym-city-card.gym-theme-panel-terra {
  --gym-theme-bottom: rgba(250, 243, 224, 0.92);
  --gym-theme-accent-a: rgba(195, 151, 76, 0.34);
  --gym-theme-accent-b: rgba(227, 197, 121, 0.27);
}
.gym-city-card.gym-theme-panel-ghiaccio {
  --gym-theme-bottom: rgba(232, 248, 250, 0.92);
  --gym-theme-accent-a: rgba(111, 184, 202, 0.34);
  --gym-theme-accent-b: rgba(179, 224, 231, 0.28);
}
.gym-city-card.gym-theme-panel-lotta {
  --gym-theme-bottom: rgba(249, 232, 224, 0.92);
  --gym-theme-accent-a: rgba(174, 82, 61, 0.36);
  --gym-theme-accent-b: rgba(221, 142, 105, 0.28);
}
.gym-city-card.gym-theme-panel-spettro {
  --gym-theme-bottom: rgba(235, 232, 247, 0.92);
  --gym-theme-accent-a: rgba(82, 73, 132, 0.36);
  --gym-theme-accent-b: rgba(145, 121, 183, 0.28);
}
.gym-city-card.gym-theme-panel-drago {
  --gym-theme-bottom: rgba(233, 236, 252, 0.92);
  --gym-theme-accent-a: rgba(78, 93, 185, 0.36);
  --gym-theme-accent-b: rgba(114, 168, 207, 0.28);
}
.gym-city-card.gym-theme-panel-superquattro {
  --gym-theme-bottom: rgba(232, 239, 252, 0.92);
  --gym-theme-accent-a: rgba(58, 88, 172, 0.38);
  --gym-theme-accent-b: rgba(130, 107, 188, 0.32);
}
.gym-city-card.gym-theme-panel-campione {
  --gym-theme-bottom: rgba(226, 241, 252, 0.94);
  --gym-theme-accent-a: rgba(37, 105, 183, 0.42);
  --gym-theme-accent-b: rgba(96, 176, 222, 0.34);
}
.gym-theme-panel .button-primary {
  --button-border-color: var(--gym-button-border);
  --button-bg: var(--gym-button-bg);
  --button-color: var(--gym-button-color);
  --button-lip-shadow: var(--gym-button-lip);
  --button-drop-shadow: var(--gym-button-drop);
}
.gym-theme-panel .gym-team-grid {
  border-color: transparent;
  background: transparent;
  box-shadow: none;
}

.e4-presentation-panel {
  margin-bottom: 24px;
}
.gym-badge-image {
  width: 34px;
  height: 34px;
  object-fit: contain;
}
.gym-limitations-list {
  display: grid;
  gap: 6px;
  margin: 0;
  padding-left: 18px;
  color: var(--text-soft);
  font-size: 13px;
  line-height: 1.15;
}
.gym-limitations-list li {
  text-align: left;
}
.gym-challenge-row {
  display: flex;
  justify-content: center;
  position: relative;
  left: calc((var(--trainer-sprite-width) + 22px) * -1);
  width: calc(100% + var(--trainer-sprite-width) + 22px);
  min-width: 0;
}
.gym-challenge-requirement {
  margin: 0;
  color: #e10000;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.3;
  text-align: center;
}

.e4-trainer-container {
  border: 1px solid var(--border);
  background: rgba(255, 251, 244, 0.44);
}

.kanto-league-section {
  display: grid;
  gap: 16px;
}
.kanto-league-heading {
  justify-self: center;
  margin: 0;
  padding: 7px 15px;
  border: 1px solid #15272f;
  border-radius: var(--radius-control);
  background: rgba(255, 255, 255, 0.9);
  font-size: 20px;
  font-weight: 800;
  text-align: center;
  letter-spacing: 0.06em;
}
.kanto-league-spacer {
  height: 52px;
}
.kanto-league-start-row {
  display: flex;
  justify-content: center;
}
.scene-content-gyms {
  display: grid;
  justify-items: stretch;
}
.scene-content-gyms .gym-scene-stack {
  width: 100%;
}
.scene-content-gyms .gym-description-panel,
.scene-content-gyms .gym-team-grid {
  width: min(var(--section-width), 100%);
  max-width: 100%;
}
.scene-content-gyms .gym-team-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--pokemon-card-width)), var(--pokemon-card-width)));
  overflow: visible;
}
.scene-content-gyms .gym-team-grid > .pokemon-card-frame {
  justify-self: center;
}
@media (max-width: 880px) {
  .gym-leader-card,
  .gym-leader-top {
    grid-template-columns: minmax(0, 1fr);
    justify-items: center;
  }

  .gym-leader-content {
    justify-items: center;
    padding-top: 0;
    text-align: center;
  }

  .gym-challenge-row {
    left: auto;
    width: 100%;
  }
}
