:root {
  --card-width: 25rem;
  --theme-primary: hsl(158 100% 33%);
  --theme-secondary: hsl(165 67% 48%);
  --theme-ternary: hsl(112 46% 75%);
  --theme-highlight: hsl(111 95% 92%);
  --theme-subtext: hsl(0 0% 30%);
  --theme-error-bg: hsl(6 93% 71%);
  --theme-error-border: hsl(355 85% 55%);
}

* {
  transition: outline-offset 0.25s ease-out;
  outline-style: none;
  outline-width: 0.15rem;
  outline-color: var(--theme-primary);
}

*:focus-visible:not(input) {
  outline-style: dashed;
  outline-offset: 0.25em;
}

.info h1::selection {
  text-fill-color: white;
  -webkit-text-fill-color: white;
  -moz-text-fill-color: white;
}

*::selection {
  background-color: gold;
}

html {
  display: flex;
  display: grid;
  align-items: center;
  height: 100%;
}

body {
  margin: 0;
  background-color: whitesmoke;
  background-image: linear-gradient(300deg, var(--theme-highlight), white);
  font-family: 'Gill Sans', 'Gill Sans Mt', 'Lato', 'sans-serif';
  overflow-x: hidden;
}

main {
  display: grid;
  place-items: center;
  grid-template-columns: repeat(auto-fit, minmax(25rem, 1fr));
  gap: 1.5rem 0;
  max-width: 80rem;
  height: 100%;
  padding: 0 3rem;
  margin: 0 auto;
}

@media (max-width: 500px) {
  main {
    padding: 3rem 0;
  }

  main > section {
    width: 95%;
  }

  main > section.info h1 {
    font-size: 2.5rem;
  }

  .scene .booster {
    --booster-scale: 0.5;
  }

  .scene .card-slot {
    margin-top: 1rem;
  }
}

@media (max-width: 895px) {
  html {
    height: auto;
  }

  .output .scene {
    margin-top: -4rem;
  }
}

@media (max-width: 1024px) {
  .output .booster {
    --booster-scale: 0.6;
  }
}

@media (max-width: 1280px) {
  section.info h1 {
    font-size: 3rem;
  }

  .output .pokecard {
    --card-scale: 0.8;
  }
}

section {
  display: grid;
  place-items: center;
  width: 100%;
  box-sizing: border-box;
}

/* Info (left) section */

.info {
  max-width: 35rem;
  height: min-content;
}

.poke-trio {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  position: relative;
  height: 5rem;
}

.poke-trio > img {
  position: relative;
  user-select: none;
}

.poke-trio > img::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 3rem;
  height: 3rem;
  border: 2px solid red;
  background-color: blue;
}

.info h1 {
  margin: 0.5rem auto 3rem;
  background-image: linear-gradient(0deg, var(--theme-primary), var(--theme-secondary));
  background-clip: text;
  -webkit-background-clip: text;
  -moz-background-clip: text;
  text-align: center;
  font-size: 4.5rem;
  font-weight: bold;
  text-fill-color: transparent;
  -webkit-text-fill-color: transparent;
  -moz-text-fill-color: transparent;
  transition: font-size 0.5s ease;
}

@media (prefers-reduced-motion) {
  .info h1 {
    transition: none;
  }
}

.info label {
  width: 100%;
  text-align: center;
  font-size: 1.25rem;
  font-weight: 700;
}

.info form {
  display: flex;
  flex-direction: row;
  width: 80%;
  margin: 0.5rem auto;
}

.info .name-interactive {
  display: flex;
  flex-direction: row;
}

.info input {
  display: block;
  width: 100%;
  height: 45px;
  box-sizing: border-box;
  padding: 0.5rem 1rem 0.5rem 5rem;
  margin: 0;
  border: 3px solid hsl(0 0% 70%);
  border-right: none;
  border-radius: 1rem 0 0 1rem;
  text-align: center;
  font-size: 1.25rem;
  transition: box-shadow 0.5s ease-out;
  box-shadow: none;
}

.info input::placeholder {
  text-align: center;
}

input:focus {
  border-color: var(--theme-secondary);
  box-shadow: 0 0 0.5rem hsl(165 67% 48% / 60%);
}

form button {
  height: 2.8125rem;
  margin: 0;
  font-size: 0.85rem;
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
}

.info-text {
  margin-top: 2.5rem;
}

.info-text p {
  width: 80%;
  margin: 1rem auto;
  text-align: justify;
  color: var(--theme-subtext);
  line-height: 1.5rem;
}

.info-text a,
info a:is(:hover, :focus, :active, :visited) {
  color: var(--theme-subtext);
  cursor: pointer;
}

/* Output (right) section */

.output {
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  height: min-content;
}

.output .actions {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 1rem;
  width: 100%;
  margin: 1rem auto 1.5rem;
  transition: transform 0.5s ease;
  z-index: 5;
}

[data-mode='booster'][data-state='completed'] .actions {
  transform: translateY(-25%);
}

button {
  padding: 0.5rem 1rem;
  border: none;
  border-radius: 1rem;
  background-image: linear-gradient(-90deg, var(--theme-ternary), var(--theme-secondary));
  font-weight: bold;
  color: white;
  transform-origin: bottom;
  transition: box-shadow 0.1s, outline-offset 0.25s ease-out, filter 0.25s ease-out, opacity 0.25s;
  whitespace: nowrap;
  filter: saturate(1);
  cursor: pointer;
}

.actions button {
  box-shadow: 0 0.2rem 0.375rem hsl(158 100% 33% / 60%);
  user-select: none;
  pointer-events: none;
  opacity: 0;
}

[data-mode='card'][data-state='completed'] button {
  pointer-events: auto;
  opacity: 1;
}

button:active {
  box-shadow: none;
}

button.toggle-name.off {
  filter: saturate(0.15);
}

.scene {
  --scale: 0.9;
  height: min-content;
  box-sizing: border-box;
  perspective: 100rem;
  transform-origin: center;
  transform: scale(var(--scale));
  transition: transform 0.5s ease-out;
}

/* Booster Pack */

.booster {
  --booster-rx: 0deg;
  --booster-ry: 0deg;
  --booster-rz: -5deg;
  --booster-scale: 0.7;
  --width: var(--card-width);
  --height: calc(var(--card-width) / 66 * 88);
  --depth: 0.5rem;
  --bg: hsl(227, 54%, 21%);
  display: none;
  position: relative;
  width: var(--width);
  height: var(--height);
  transform-style: preserve-3d;
  transform: rotateX(var(--booster-rx)) rotateY(var(--booster-ry)) rotateZ(var(--booster-rz))
    scale(var(--booster-scale));
  transition: transform 0.5s ease-in-out;
  cursor: pointer;
}

.booster > div {
  display: grid;
  place-items: center;
  position: absolute;
  font-size: 5rem;
  transform-origin: center;
  user-select: none;
}

.face:is(.front, .back, .left, .right) {
  height: var(--height);
  background-color: var(--bg);
}

.face:is(.front, .back, .top, .bottom) {
  width: var(--width);
}
.left,
.right {
  width: var(--depth);
}

.face:is(.top, .bottom) {
  height: var(--depth);
}

.foil {
  width: var(--width);
  background-image: linear-gradient(
    90deg,
    hsl(0 0% 80%) 0%,
    hsl(0 0% 84%) 10%,
    hsl(0 0% 88%) 20%,
    hsl(0 0% 92%) 30%,
    hsl(0 0% 96%) 40%,
    hsl(0 0% 100%) 50%,
    hsl(0 0% 96%) 60%,
    hsl(0 0% 92%) 70%,
    hsl(0 0% 88%) 80%,
    hsl(0 0% 84%) 90%,
    hsl(0 0% 80%) 100%
  );
}
.foil.top.flat {
  height: 20px;
  transform-origin: bottom;
  transform: translate3d(0, -30px, 0px) rotateX(0deg);
}
.foil.top.flat::after,
.foil.bottom.flat::after {
  content: '';
  position: absolute;
  width: var(--width);
  height: 20px;
  background: radial-gradient(#ffffff 0%, transparent 50%);
  background-size: 1% 100%;
}
.foil.top.front {
  height: 11px;
  transform-origin: bottom;
  transform: translate3d(0, -11.4px, 3.8px) rotateX(20.5deg);
}
.foil.top.back {
  height: 11px;
  transform-origin: bottom;
  transform: translate3d(0, -11.4px, -4px) rotateX(339deg);
}
.face.front {
  transform: rotateY(0deg) translate3d(0, 0, calc(var(--depth) / 2));
}
.face.left {
  transform: rotateY(90deg) translate3d(0, 0, calc(var(--width) - calc(var(--depth) / 2)));
}
.face.back {
  transform: rotateY(180deg) translate3d(0, 0, calc(var(--depth) / 2)) rotateZ(180deg);
}
.face.right {
  transform: rotateY(-90deg) translate3d(0, 0, calc(var(--depth) / 2));
}
.face.top {
  transform: rotateX(90deg) translate3d(0, 0, calc(var(--depth) / 2));
}
.face.bottom {
  transform: rotateX(-90deg) translate3d(0, 0, calc(var(--height) - calc(var(--depth) / 2)));
}
.foil.bottom.flat {
  height: 20px;
  transform-origin: top;
  transform: translate3d(0, calc(var(--height) + 10px), 0px) rotateX(0deg);
}
.foil.bottom.front {
  height: 11px;
  transform-origin: top;
  transform: translate3d(0, var(--height), 3.8px) rotateX(-19.5deg);
}
.foil.bottom.back {
  height: 11px;
  transform-origin: top;
  transform: translate3d(0, var(--height), -3.8px) rotateX(19.5deg);
}

.foil.back.flat {
  width: 30px;
  height: var(--height);
  background-image: linear-gradient(
    90deg,
    hsl(0 0% 0%) 0%,
    hsl(0 0% 10%) 20%,
    hsl(0 0% 40%) 30%,
    hsl(0 0% 60%) 40%,
    hsl(0 0% 86%) 50%,
    hsl(0 0% 90%) 60%,
    hsl(0 0% 85%) 80%,
    hsl(0 0% 90%) 90%,
    hsl(0 0% 70%) 100%
  );
  transform-origin: bottom;
  transform: translate3d(calc(var(--width) / 2 - 25px), 0px, calc(var(--depth) * -0.50001)) rotateX(0deg);
}
.foil.back.flap {
  width: 30px;
  height: var(--height);
  background-image: linear-gradient(
    90deg,
    hsl(0 0% 70%) 0%,
    hsl(0 0% 74%) 10%,
    hsl(0 0% 78%) 20%,
    hsl(0 0% 82%) 30%,
    hsl(0 0% 86%) 40%,
    hsl(0 0% 90%) 50%,
    hsl(0 0% 86%) 60%,
    hsl(0 0% 82%) 70%,
    hsl(0 0% 78%) 80%,
    hsl(0 0% 74%) 90%,
    hsl(0 0% 70%) 100%
  );
  transform-origin: center;
  transform: translate3d(calc(var(--width) / 2 - 25.5px), 0, -8px) rotateY(15deg);
}

.foil.back.flap::after {
  content: '';
  position: absolute;
  width: 30px;
  height: var(--height);
  background: radial-gradient(#ffffff 0%, transparent 50%);
  background-size: 100% 0.75%;
}

.gradient-bg {
  background-image: linear-gradient(
    225deg,
    hsl(270deg 100% 7%) 0%,
    hsl(246deg 77% 15%) 14%,
    hsl(223deg 59% 24%) 29%,
    hsl(199deg 44% 35%) 43%,
    hsl(175deg 32% 48%) 57%,
    hsl(151deg 36% 62%) 71%,
    hsl(128deg 45% 78%) 86%,
    hsl(104deg 100% 95%) 100%
  );
}

.face.front {
  display: flex;
  flex-direction: column;
  justify-content: space-evenly;
  gap: 0.5rem;
  box-sizing: border-box;
  padding: 1rem;
}

.face.front,
.face.back {
  background-size: var(--width);
  background-image: url('booster-background.svg');
  background-position: center;
}

.face.right,
.face.left {
  background-image: linear-gradient(
    0deg,
    hsl(151deg 36% 62%) 0%,
    hsl(175deg 32% 48%) 14%,
    hsl(199deg 44% 35%) 29%,
    hsl(223deg 59% 24%) 57%,
    hsl(246deg 77% 15%) 86%,
    hsl(270deg 100% 7%) 100%
  );
}

img.title {
  width: 100%;
  filter: drop-shadow(0 0.25rem 0.1rem hsl(220 100% 10% / 0.75));
}
img.hf-logo {
  width: 90%;
}

.triangle {
  width: calc(var(--depth) * 10);
  aspect-ratio: 1 / 1.35;
}

.triangle.top {
  clip-path: polygon(0% 100%, 50% 0%, 100% 100%);
}
.triangle.bottom {
  clip-path: polygon(0% 0%, 50% 100%, 100% 0%);
}

.triangle.top.right {
  transform: rotateY(90deg) translate3d(0.1px, -59.1px, -39.5px) scale(0.1);
}
.triangle.top.left {
  transform: rotateY(90deg) translate3d(0.1px, -59.1px, calc(var(--width) - 41.5px)) scale(0.1);
}
.triangle.bottom.left {
  transform: rotateY(90deg) translate3d(0.1px, calc(var(--height) - 49px), calc(var(--width) - 41.5px)) scale(0.1);
}
.triangle.bottom.right {
  transform: rotateY(90deg) translate3d(0px, calc(var(--height) - 49px), -39.5px) scale(0.1);
}

/* Animation */

@keyframes spin-x {
  from {
    transform: scale(var(--scale)) rotate(0turn);
  }
  to {
    transform: scale(var(--scale)) rotate(1turn);
  }
}

@keyframes spin-y {
  0% {
    transform: rotateX(var(--booster-rx)) rotateY(0deg) rotateZ(0deg) scale(var(--booster-scale));
  }
  100% {
    transform: rotateX(var(--booster-rx)) rotateY(360deg) rotateZ(0deg) scale(var(--booster-scale));
  }
}

@keyframes bounce {
  0% {
    transform: rotateX(var(--booster-rx)) rotateY(var(--booster-ry)) rotateZ(var(--booster-rz))
      scale(var(--booster-scale)) translateY(0%);
  }
  30% {
    transform: rotateX(var(--booster-rx)) rotateY(var(--booster-ry)) rotateZ(var(--booster-rz))
      scale(var(--booster-scale)) translateY(-2%);
  }
  50% {
    transform: rotateX(var(--booster-rx)) rotateY(var(--booster-ry)) rotateZ(var(--booster-rz))
      scale(var(--booster-scale)) translateY(1%);
  }
  70% {
    transform: rotateX(var(--booster-rx)) rotateY(var(--booster-ry)) rotateZ(var(--booster-rz))
      scale(var(--booster-scale)) translateY(-1%);
  }
  100% {
    transform: rotateX(var(--booster-rx)) rotateY(var(--booster-ry)) rotateZ(var(--booster-rz))
      scale(var(--booster-scale)) translateY(0%);
  }
}

@keyframes shrink {
  from {
    transform: rotateZ(45deg) scale(var(--booster-scale));
    opacity: 1;
  }
  to {
    transform: rotateZ(270deg) scale(0);
    opacity: 0;
  }
}

[data-mode='booster'] .booster {
  display: block;
}

:is([data-state='ready'], [data-state='failed']) .booster {
  animation: 5s bounce infinite ease-out;
}

[data-state='generating'] .scene {
  animation: 15s spin-x infinite linear;
}
[data-state='generating'] .booster {
  transform-origin: center;
  animation: 3s spin-y infinite linear;
  cursor: default;
}

[data-mode='booster'][data-state='completed'] .booster {
  animation: 0.5s shrink ease-out forwards;
}

[data-mode='booster'][data-state='completed'] .card-slot {
  transform: scale(0);
  opacity: 0;
}

[data-mode='booster'][data-state='completed'] .back {
  display: none;
}

[data-mode='card'][data-state='completed'] .booster {
  --booster-scale: 0;
}

[data-mode='card'][data-state='completed'] .card-slot {
  transform: scale(1);
  opacity: 1;
}

@media (prefers-reduced-motion) {
  @keyframes pulse {
    from {
      opacity: 1;
    }
    to {
      opacity: 0.6;
    }
  }

  @keyframes fade {
    from {
      opacity: 1;
    }
    to {
      opacity: 0;
    }
  }

  .card-slot .pokecard {
    transition: none;
  }

  [data-mode='booster']:is([data-state='generating'], [data-state='completed']) .scene {
    animation: 1.5s pulse alternate ease-in-out infinite forwards;
  }

  [data-state='generating'] .booster {
    animation: 10s bounce infinite ease-out;
  }

  [data-mode='booster'][data-state='completed'] .booster {
    animation: 1s fade ease-in forwards;
  }

  [data-state='completed'] .card-slot {
    transition: opacity 1s ease-in;
  }

  [data-mode='booster'][data-state='completed'] .card-slot {
    transform: scale(1);
    opacity: 0;
  }

  [data-mode='card'][data-state='completed'] .card-slot {
    opacity: 1;
  }
}

/* Pokémon Card */

.card-slot {
  height: 100%;
  perspective: 100rem;
  transition: transform 0.5s ease-out, opacity 0.5s ease-in;
}

.grass {
  --h: 90;
  --s: 60%;
  --l: 40%;
}
.grass.energy {
  filter: contrast(0.75) grayscale(1) sepia(1) saturate(10) hue-rotate(55deg) drop-shadow(0 0 0.1rem green);
}

.fire {
  --h: 0;
  --s: 75%;
  --l: 45%;
}
.fire.energy {
  filter: contrast(0.75) grayscale(1) sepia(1) saturate(10) hue-rotate(335deg) drop-shadow(0 0 0.1rem red);
}

.water {
  --h: 210;
  --s: 100%;
  --l: 58%;
}
.water.energy {
  filter: contrast(0.75) grayscale(1) sepia(1) saturate(10) hue-rotate(180deg) drop-shadow(0 0 0.1rem cyan);
}

.lightning {
  --h: 50;
  --s: 100%;
  --l: 58%;
}
.lightning.energy {
  filter: contrast(0.75) grayscale(1) sepia(1) saturate(10) hue-rotate(5deg) drop-shadow(0 0 0.1rem gold);
}

.fighting {
  --h: 25;
  --s: 72%;
  --l: 36%;
}
.fighting.energy {
  filter: contrast(0.75) grayscale(1) sepia(1) saturate(10) hue-rotate(320deg) drop-shadow(0 0 0.1rem brown);
}

.psychic {
  --h: 299;
  --s: 43%;
  --l: 44%;
}
.psychic.energy {
  filter: grayscale(1) sepia(1) saturate(10) hue-rotate(240deg) drop-shadow(0 0 0.1rem purple);
}

.colorless {
  --h: 21;
  --s: 27%;
  --l: 85%;
}
.colorless.energy {
  border-radius: 50%;
  filter: contrast(100) grayscale(1);
  text-shadow: 0 0 0.5rem black;
}

.darkness {
  --h: 100;
  --s: 3%;
  --l: 17%;
}
.darkness.energy {
  filter: drop-shadow(0 0 0.1rem black);
}
.darkness :not(.species) {
  color: whitesmoke;
}

.metal {
  --h: 240;
  --s: 20%;
  --l: 77%;
}
.metal.energy {
  filter: drop-shadow(0 0 0.1rem silver);
}

.dragon {
  --h: 30;
  --s: 6%;
  --l: 44%;
}
.dragon.energy {
  filter: contrast(0.75) grayscale(1) sepia(1) saturate(10) hue-rotate(15deg) drop-shadow(0 0 0.1rem gold);
}

.fairy {
  --h: 334;
  --s: 74%;
  --l: 55%;
}
.fairy.energy {
  filter: contrast(0.75) grayscale(1) sepia(1) saturate(10) hue-rotate(300deg) drop-shadow(0 0 0.1rem pink);
}

.pokecard,
.pokecard * {
  box-sizing: border-box;
}

.pokecard {
  --frame-h: 47;
  --frame-s: 95%;
  --frame-l: 58%;
  --frame-color: hsl(47 95% 58%);
  --color: hsl(var(--h) var(--s) var(--l));
  --lighter: hsl(var(--h) var(--s) calc(var(--l) + 10%));
  --lightest: hsl(var(--h) var(--s) calc(var(--l) + 30%));
  --card-rx: 0deg;
  --card-ry: 0deg;
  --card-rz: 0deg;
  --card-scale: 1;
  display: flex;
  flex-direction: column;
  position: relative;
  width: 25rem;
  height: 35rem;
  padding: 0.5rem 1rem 0.1rem;
  border: 1rem solid;
  border-radius: 0.75rem;
  border-color: var(--frame-color);
  background-image: linear-gradient(
    45deg,
    var(--lighter) 0%,
    var(--lightest) 15%,
    var(--lightest) 30%,
    var(--color) 50%,
    var(--lightest) 90%,
    var(--lighter) 100%
  );
  transform-style: preserve-3d;
  transform-origin: center;
  transform: rotateX(var(--card-rx)) rotateY(var(--card-ry)) scale(var(--card-scale));
  transition: transform 0.5s ease-out;
  box-shadow: 0 0.75rem 1.25rem 0 hsl(0 0% 50% / 40%);
}

.pokecard .lower-half {
  display: flex;
  flex-direction: column;
  height: 100%;
}

.evolves {
  margin: 0 1px -5px;
  font-size: 0.6rem;
  font-weight: bold;
}

header {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  min-height: 1.4rem;
}

header > * {
  display: inline-block;
}

.name {
  display: inline-block;
  justify-self: left;
  position: absolute;
  left: 1rem;
  margin: 0;
  font-size: 1.25rem;
  transform-origin: left;
  white-space: nowrap;
}

header > div {
  position: absolute;
  right: 1rem;
  width: max-content;
  white-space: nowrap;
}

.hp {
  font-size: 1.25rem;
  color: hsl(0 100% 50%);
}

header .energy {
  display: inline-block;
  transform: translateY(-0.15rem);
}

.frame:is(.picture, .species, .description) {
  --lighter: hsl(var(--frame-h) var(--frame-s) calc(var(--frame-l) + 15%));
  --lightest: hsl(var(--frame-h) var(--frame-s) calc(var(--frame-l) + 30%));
  --darker: hsl(var(--frame-h) var(--frame-s) calc(var(--frame-l) - 15%));
  border-color: var(--darker) var(--frame-color) var(--lighter);
}

.picture,
.inline-block {
  display: inline-block;
}

.picture {
  width: 100%;
  height: 240px;
  border: 0.375rem solid;
  background-color: white;
  object-fit: contain;
  box-shadow: 0.25rem 0.25rem 0.5rem black;
  user-select: none;
}

.species {
  width: 90%;
  padding: 0.1rem;
  margin: 0.25rem auto;
  border-style: solid;
  border-width: 0 0.2rem;
  border-image: linear-gradient(var(--lightest), var(--darker)) 1 100%;
  background-image: linear-gradient(90deg, var(--frame-color), var(--lightest) 45% 55%, var(--frame-color));
  text-align: center;
  font-size: 0.75rem;
  font-weight: bold;
  font-style: italic;
}

.species::selection {
  background-color: white;
}

.attacks-row,
.footer {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  width: 100%;
}

.footer > span:first-child {
  text-align: left;
}

.footer > span:last-child {
  text-align: right;
}

.attacks {
  display: flex;
  flex-direction: column;
  justify-content: space-evenly;
  height: 100%;
  padding: 0;
  margin: 0;
  list-style-type: none;
}

.attacks-row {
  grid-template-columns: 3rem 1fr 3rem;
  align-items: center;
  width: 105%;
  height: 100%;
  max-height: 5rem;
  padding: 0.25rem 0;
  margin-left: -2.5%;
  border-bottom: 0.5px solid hsl(0, 0%, 10%);
  font-size: 0.95em;
}

.attacks-row.no-cost {
  grid-template-columns: 1fr 3rem;
}
.attacks-row.no-damage {
  grid-template-columns: 3rem 1fr;
  text-align: left;
}
.attacks-row.no-cost.no-damage {
  grid-template-columns: 1fr;
}

.attack-text {
  margin-left: 0.25rem;
  margin-right: 0.1rem;
}

.attack-text > span:only-child {
  display: block;
  margin-left: -1rem;
  text-align: center;
}

.no-cost .attack-text > span:only-child,
.no-cost.no-damage .attack-text > span:only-child {
  width: var(--card-width);
  margin-left: -2.5rem;
}
.no-damage .attack-text > span:only-child {
  width: var(--card-width);
  margin-left: -5.5rem;
}

.attack-cost {
  display: flex;
  flex-flow: row wrap;
  justify-content: space-evenly;
  text-align: justify;
}

.energy {
  width: 1.2rem;
  height: 1.2rem;
  text-align: center;
  cursor: default;
  user-select: none;
}

.energy:only-child {
  justify-self: flex-start;
  margin: auto;
}

.attack-name {
  font-weight: bold;
}

.attack-damage {
  min-width: 2.25rem;
  text-align: center;
  font-size: 1.375rem;
}

hr {
  border: 0.5px solid black;
  background-color: black;
}

.multipliers {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  height: 2rem;
  margin-top: 0;
  text-align: center;
  font-size: 0.75rem;
  font-weight: bold;
}

.multipliers > div {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: max-content;
  margin: 0;
  white-space: nowrap;
}

.resistance {
  position: relative;
}

.resistance-total {
  position: absolute;
  top: 1rem;
  left: 2.5rem;
}

.description {
  padding: 0.1rem 0.5rem;
  margin: 0.25rem 0 0;
  border: 0.1rem solid;
  font-size: 0.65rem;
  font-weight: bold;
  font-style: italic;
}

.footer {
  align-self: end;
  position: relative;
  margin: 0.15rem 0;
  text-align: center;
  font-size: 0.6rem;
  font-weight: bold;
}

.pokecard a {
  text-decoration: none;
  color: inherit;
}
