/* ASTRAL CARDS · Astral Arcana frame. Inspired by classic monster TCG
   information hierarchy, not a reproduction of any branded card design. */
.game-card{
  --frame-base:#775c43;
  flex:0 0 177px;
  width:177px;
  height:309px;
  min-width:0;
  padding:8px;
  display:flex;
  flex-direction:column;
  position:relative;
  isolation:isolate;
  gap:0;
  border:1px solid #f5d89a;
  border-radius:9px;
  background:
    radial-gradient(ellipse at 50% 8%,#ffffff62,transparent 25%),
    repeating-linear-gradient(145deg,transparent 0 3px,#09091609 3px 5px),
    linear-gradient(138deg,#bb8d5a,#5d3c37 42%,#8f6c49 75%,#302c3f);
  box-shadow:inset 0 0 0 2px #351c27,inset 0 0 0 4px #d2a568,0 11px 25px #000a;
  text-shadow:none;
  text-align:left;
  transform-origin:center bottom;
  overflow:hidden;
}
.game-card:before{
  inset:4px;
  border:1px solid #e8d3a18c;
  border-radius:5px;
  box-shadow:inset 0 0 20px #120e27ad;
}
.game-card:after{
  content:'';
  position:absolute;
  inset:0;
  z-index:4;
  pointer-events:none;
  border-radius:inherit;
  background:linear-gradient(116deg,transparent 20%,#fff9ce24 34%,transparent 40% 100%);
  opacity:.5;
}
.game-card.element-flame{background-color:#9e532b;background-image:radial-gradient(circle at 20% 12%,#edb46b,transparent 48%),linear-gradient(130deg,#c47b3e,#6d3d37 50%,#d79855);}
.game-card.element-frost{background-color:#637997;background-image:radial-gradient(circle at 20% 12%,#bddeff,transparent 48%),linear-gradient(130deg,#a8b8d6,#405d80 50%,#c2c7e2);}
.game-card.element-thunder{background-color:#a18239;background-image:radial-gradient(circle at 20% 12%,#ffefab,transparent 48%),linear-gradient(130deg,#c5a355,#65512d 50%,#b39c70);}
.game-card.element-void{background-color:#5b3e86;background-image:radial-gradient(circle at 20% 12%,#bc92ed,transparent 48%),linear-gradient(130deg,#8260b3,#37234f 50%,#a077ba);}
.game-card.element-nature{background-color:#607c47;background-image:radial-gradient(circle at 20% 12%,#bddd91,transparent 48%),linear-gradient(130deg,#91a969,#405438 50%,#a8b778);}
.game-card.element-tide{background-color:#3c7c8d;background-image:radial-gradient(circle at 20% 12%,#add9ec,transparent 48%),linear-gradient(130deg,#85bbca,#31536d 50%,#9fcac7);}
.game-card.element-earth{background-color:#816243;background-image:radial-gradient(circle at 20% 12%,#e8c29a,transparent 48%),linear-gradient(130deg,#bd9871,#514034 50%,#bc9a70);}
.game-card.rank-USR,.game-card.rank-USR\+,.game-card.rank-UR\+,.game-card.rank-X,.game-card.rank-SSS{
  border-color:#ffe9b5;
  box-shadow:inset 0 0 0 2px #352132,inset 0 0 0 4px #ddbc73,0 0 20px #dfb5673e,0 10px 23px #000b;
}
.card-inner-border{
  pointer-events:none;
  position:absolute;
  inset:5px;
  border:1px solid #3225318c;
  border-radius:4px;
}
.card-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:3px 3px 0 7px;
  gap:5px;
  height:30px;
  flex:0 0 30px;
  position:relative;
  z-index:1;
}
.game-card .card-name{
  display:block;
  padding:0;
  color:#191222;
  font:800 12px/1.2 'Be Vietnam Pro',sans-serif;
  text-align:left;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  filter:drop-shadow(0 1px 1px #fffffe8a);
}
.card-attribute{
  flex:0 0 24px;
  height:24px;
  display:grid;
  place-items:center;
  border:2px solid #ecd4a8;
  border-radius:50%;
  background:radial-gradient(circle at 32% 25%,var(--element-color),#1a182b 75%);
  box-shadow:inset 0 0 0 1px #403044,0 1px 4px #0007;
  color:white;
  font:700 16px/1 Cinzel,serif;
  text-shadow:0 1px 3px #000;
}
.card-level{
  display:flex;
  justify-content:space-between;
  gap:4px;
  height:19px;
  align-items:center;
  padding:0 5px 2px;
}
.game-card .card-rarity{
  color:#2b1926;
  background:#f0d39a88;
  border:1px solid #734c46aa;
  border-radius:3px;
  padding:0 5px;
  font:800 9px/14px Cinzel,serif;
  letter-spacing:.4px;
}
.star-row{
  display:flex;
  justify-content:flex-end;
  gap:1px;
  min-width:0;
  color:#fff3aa;
  text-shadow:0 1px 2px #4a1903,0 0 4px #ffe2a7;
  font:11px/1 Georgia,serif;
}
.game-card .card-illustration{
  flex:0 0 146px;
  height:146px;
  min-height:0;
  margin:0 2px;
  border:3px ridge #e4c78d;
  border-radius:2px;
  background:#0c1125;
  box-shadow:inset 0 0 0 1px #121226,0 2px 5px #110e1e9c;
  overflow:hidden;
  position:relative;
  z-index:1;
}
.atlas-art,.vector-art{
  height:100%;
  width:100%;
  display:block;
  position:absolute;
  inset:0;
}
.atlas-art{
  background-size:400% auto;
  background-repeat:no-repeat;
}
.vector-art{
  background:
    radial-gradient(circle at 48% 37%,var(--element-glow),transparent 75%),
    linear-gradient(135deg,#141828,#25223e);
}
.vector-art svg{height:100%;width:100%;display:block}
.card-illustration>.cost-orb{
  position:absolute;
  top:6px;
  left:6px;
  z-index:2;
  display:grid;
  place-items:center;
  width:28px;
  height:28px;
  border-radius:50%;
  border:2px solid #e7cc9c;
  box-shadow:0 2px 6px #000a,inset 0 0 8px #a99af1;
  color:white;
  background:radial-gradient(circle at 35% 20%,#ab9ef4,#47378a 70%);
  font:800 15px Cinzel,serif;
}
.card-effect{
  z-index:1;
  margin:5px 2px 0;
  padding:5px 6px 3px;
  height:78px;
  min-height:0;
  border:1px solid #775d46;
  background:linear-gradient(160deg,#f7eacb,#ead6af);
  box-shadow:inset 0 0 9px #6a493423;
  color:#281d20;
  display:flex;
  flex-direction:column;
}
.effect-type{
  color:#2f2630;
  font:800 8px/1.25 'Be Vietnam Pro',sans-serif;
  letter-spacing:.03em;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.effect-description{
  font:500 8px/1.45 'Be Vietnam Pro',sans-serif;
  color:#4c3738;
  padding-top:3px;
  overflow:hidden;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:3;
}
.game-card .card-foot{
  position:relative;
  left:auto;right:auto;bottom:auto;
  padding:4px 5px 0;
  margin:0 2px;
  border-top:1px solid #704f43;
  display:flex;
  gap:5px;
  justify-content:flex-end;
  align-items:center;
  color:#1e1721;
  background:transparent;
  font:800 9px/1 Cinzel,serif;
}
.game-card .card-foot span+span{border-left:1px solid #573c45;padding-left:5px}
.game-card .card-foot .atk,.game-card .card-foot .hp{color:#261620;font-size:11px}
.game-card:hover:not(:disabled){transform:translateY(-7px) rotate(-1deg);box-shadow:0 17px 30px #000b,0 0 20px #ddbf817a}
.game-card.selected{transform:translateY(-13px)!important;box-shadow:0 0 0 3px #ffeba8,0 17px 30px #000a!important}
.game-card.unaffordable{opacity:.61;filter:saturate(.75)}
.card-hand{min-height:330px;gap:15px;padding-top:12px}

/* Compact catalogue and deck card sizes. */
.mini-card-grid{grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:14px}
.mini-card-grid .game-card{height:306px;width:100%;flex-basis:auto}
.mini-card-grid .card-illustration{flex-basis:145px;height:145px}
.deck-card-wrap .game-card{pointer-events:none}
.collection-grid{grid-template-columns:repeat(auto-fill,minmax(176px,1fr))}
.collection-tile{border-color:#8b6e5299;background:linear-gradient(160deg,#282034,#141526)}
.collection-tile .tile-art{height:185px;border-bottom:2px solid #8a6a56}
.collection-tile .tile-art .atlas-art{background-size:400% auto}
.collection-tile .tile-art .vector-art{background:radial-gradient(circle,var(--element-glow),transparent 75%),#15182e}
.collection-tile .tile-rank{background:#241a2de8}
.slot-art>.atlas-art,.slot-art>.vector-art{height:100%;width:100%;position:absolute;inset:0}
.slot-art{position:relative}
.slot-art:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 70%,#0b0b19a8);pointer-events:none}
.slot-name{z-index:2}
@media(max-width:650px){
  .game-card{flex-basis:159px;width:159px;height:283px;padding:7px}
  .card-header{height:27px;flex-basis:27px}
  .game-card .card-name{font-size:10px}
  .card-attribute{height:22px;flex-basis:22px;font-size:14px}
  .card-level{height:17px}
  .star-row{font-size:9px}
  .game-card .card-illustration{height:131px;flex-basis:131px}
  .card-effect{height:71px;padding:4px 5px}
  .effect-type{font-size:7px}
  .effect-description{font-size:7px;line-height:1.45}
  .card-hand{min-height:305px;gap:10px}
  .mini-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
  .mini-card-grid .game-card{height:283px}
  .mini-card-grid .card-illustration{height:131px;flex-basis:131px}
  .collection-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .collection-tile .tile-art{height:158px}
}
@media(prefers-reduced-motion:reduce){.game-card:hover:not(:disabled){transform:none}}
