/* Genere par tools/extract-carte-render.py depuis Fiches carte/index.html -- ne pas editer a la main. */
/* ---- carte : illustration EN DESSOUS, PNG du cadre AU-DESSUS avec son trou transparent,
     texte/symboles encore au-dessus du cadre ---- */
.pcard .mtg-card {
    aspect-ratio:492/688; width:100%; position:relative;
    box-shadow:0 14px 34px -14px rgba(0,0,0,.55);
    color:#1c1710; font-synthesis:none;
  }

.pcard .card-art-layer {
    position:absolute; top:11.19%; height:44.19%; left:3.86%; width:91.87%;
    overflow:hidden; background:#0d0d0d; z-index:1;
  }

.pcard .card-art-layer img { width:100%; height:100%; object-fit:cover; display:block; }
/* Carte normale dont l'illustration est quasi carree (classe posee en JS par markSquareArt) :
     fenetre retrecie a 24px des bords de la carte, comme la fenetre PW, pour moins rogner les cotes. */
.pcard .mtg-card:not(.planeswalker) .card-art-layer.art-square { left:24px; right:24px; width:auto; }
/* Planeswalker uniquement : image pleine largeur de carte (moins un contour
     de 20px sur les 4 cotes) ; l'image y est calee sur la fenetre du cadre (voir la regle img ci-dessous). */
.pcard .mtg-card.planeswalker .card-art-layer { top:20px; left:20px; right:20px; bottom:20px; width:auto; height:auto; overflow:hidden; }
/* Image a la hauteur exacte de la fenetre transparente du cadre PW (y 70-379 sur 688 : 45.06% de la carte,
     centre a 32.63%), largeur libre au ratio naturel, centree ; le surplus lateral est rogne par le calque.
     Le calque commence 20px sous le haut de la carte et mesure 40px de moins qu'elle, d'ou le (100% + 40px). */
.pcard .mtg-card.planeswalker .card-art-layer img { height:calc((100% + 40px) * 0.4506); width:auto; max-width:none;
    display:block; position:absolute; left:50%; top:calc((100% + 40px) * 0.3263 - 20px); transform:translate(-50%, -50%); }

.pcard .card-frame-layer {
    position:absolute; inset:0; width:100%; height:100%; z-index:2; pointer-events:none;
  }
/* Planeswalker uniquement : voile blanc 50% sur la moitie basse de la carte,
     devant l'illustration mais derriere le cadre PNG (meme z-index que le
     cadre, insere avant lui dans le DOM donc peint en-dessous). */
.pcard .pw-bottom-overlay {
    position:absolute; left:0; right:0; top:60%; bottom:0; z-index:2;
    background:rgba(255,255,255,.7); pointer-events:none;
  }

.pcard .zone { position:absolute; z-index:3; }

.pcard .zone-name { top:4.07%; height:5.81%; left:3.86%; width:91.87%; display:flex; align-items:center; justify-content:space-between; gap:6px; padding-left:3.2%; padding-right:2.4%; padding-top:0.7%; }
/* Planeswalker uniquement : titre remonte de 5px. *//* Planeswalker avec illustration en hauteur (plus haute que large) : largeur du cadre (marges 20px gauche/droite),
     ratio naturel, commence a 20px du haut ; le bas est rogne par le calque. */
.pcard .mtg-card.planeswalker .card-art-layer.art-portrait img { width:100%; height:auto; max-width:100%; position:static; left:auto; top:auto; transform:none; }

.pcard .mtg-card.planeswalker .zone-name { top:calc(4.07% - 5px); }

.pcard .name { font-family:"Beleren","Spectral",serif; font-weight:700; font-size:clamp(11px,2.7vw,16px); line-height:1.1; transform:translate(3px, 2px) scaleY(1.05); white-space:nowrap; overflow:hidden; min-width:0; }

.pcard .cost { display:flex; gap:0px; flex-shrink:0; transform:translate(-2px, 1px); }

.pcard .cost .pip:not(:last-child) { margin-right:-1px; }

.pcard .zone-type { top:56.25%; height:4.94%; left:3.86%; width:91.87%; display:flex; align-items:center; justify-content:space-between; gap:8px; padding-inline:3.4%; font-size:14px; font-family:"Beleren","IBM Plex Sans",sans-serif; font-weight:700; position:relative; }

.pcard .type-text { transform:translate(3px, 2px) scaleY(1.05); font-style:normal; font-stretch:normal; white-space:nowrap; overflow:hidden; min-width:0; }

.pcard .rarity-gem { position:absolute; right:3.4%; top:50%; height:18px; width:auto; max-width:40px; transform:translateY(calc(-50% + 2px)); }
/* SVG Scryfall inline (voir inlineRaritySvgs()) : trait noir d'origine sans
     couleur. Repli uni par defaut (fill:currentColor + couleur par rarete) ;
     les regles plus specifiques juste apres appliquent la texture (voir les
     <pattern> dans #rarity-textures, plus bas dans le body) quand elle existe
     -- objectBoundingBox + preserveAspectRatio="none" deforme la texture pour
     suivre exactement le ratio de CHAQUE logo (ils n'ont pas tous le meme). */
.pcard .rarity-gem-svg { display:block; }

.pcard .rarity-gem-svg svg { display:block; height:100%; width:auto; filter:url(#gem-inner-shadow); }

.pcard .rarity-gem-svg svg path { fill:currentColor !important; }

.pcard .rarity-gem-svg.rarity-common { color:#1a1a1a; }

.pcard .rarity-gem-svg.rarity-uncommon { color:#707883; }

.pcard .rarity-gem-svg.rarity-rare,
.pcard .rarity-gem-svg.rarity-special { color:#c9a227; }

.pcard .rarity-gem-svg.rarity-mythic,
.pcard .rarity-gem-svg.rarity-bonus { color:#d8531f; }

.pcard .rarity-gem-svg.rarity-uncommon svg path { fill:url(#tex-uncommon) !important; }

.pcard .rarity-gem-svg.rarity-rare svg path,
.pcard .rarity-gem-svg.rarity-special svg path { fill:url(#tex-rare) !important; }

.pcard .rarity-gem-svg.rarity-mythic svg path,
.pcard .rarity-gem-svg.rarity-bonus svg path { fill:url(#tex-mythic) !important; }

.pcard .zone-text { top:62.6%; height:28%; left:9%; width:82%; display:flex; flex-direction:column; justify-content:center; gap:0; overflow:hidden; transform:translateY(1px) scaleY(1.05); transform-origin:top; }
/* Planeswalker uniquement : boite de texte sombre sur ce cadre -> encre claire.
     La boite est elargie de 20px a gauche (+ padding-left de 20px qui compense
     pour que le texte reste au meme endroit) afin de laisser de la place au
     badge "+1" decale sans qu'il soit rogne par l'overflow:hidden -- melanger
     overflow-x:visible et overflow-y:hidden ne marche pas (l'axe visible
     retombe en "auto", qui clippe quand meme).
     justify-content:center (herite de la regle de base .zone-text) : s'il
     reste de la place libre en haut/bas de l'ensemble des capacites (texte
     court, ou badges reduits par fitCardText() -- dans ce cas la police
     n'est plus agrandie pour combler l'espace), elle est repartie de facon
     egale au lieu de s'accumuler seulement en bas. */
.pcard .mtg-card.planeswalker .zone-text {
    color:#1c1710; left:calc(9% - 20px); width:calc(82% + 20px); padding-left:20px;
    padding-block:4px; /* marge mini symetrique, deduite par fitCardText() */
    overflow:visible; /* les badges +/- (agrandis) passent devant le cadre au lieu d etre rognes a gauche */
  }

.pcard .mtg-card.planeswalker .text-wall { display:none; }
/* Bandes a bord dechire, dessinees par layoutPlaneswalkerBands(). Enfant
     direct de .mtg-card, insere juste avant le PNG du cadre avec le meme
     z-index (2) : peint au-dessus de l'illustration et du voile, SOUS le
     cadre -- et donc sous tout .zone (z-index 3). Dans .zone-text, n'importe
     quel z-index restait prisonnier du contexte d'empilement de .zone (3),
     toujours au-dessus du cadre. Geometrie et transform recopies de
     .zone-text par le JS : les bandes gardent leurs coordonnees locales. */
.pcard .pw-bands { position:absolute; z-index:2; pointer-events:none; overflow:hidden; transform-origin:top; }

.pcard .text-wall { height:1px; flex-shrink:0; }

.pcard .rules { display:flex; flex-direction:column; gap:5px; font-size:clamp(10px,2.1vw,12px); line-height:1.05; font-family:"PlantinStd","Beleren","IBM Plex Sans",serif; font-weight:600; }

.pcard .rule-line { display:flex; gap:5px; align-items:center; }

.pcard .rule-line > span:last-child { flex:1 1 auto; min-width:0; }
/* Planeswalker uniquement : une capacite d'une seule ligne occupe quand
     meme la hauteur de 2 lignes minimum (en em, donc suit line-height:1.05
     de .rules), pour eviter les capacites courtes trop ecrasees. Porte par la
     ligne (pas par le texte) : align-items:center centre alors le texte
     court dans cette hauteur au lieu de laisser une ligne vide en dessous. */
.pcard .mtg-card.planeswalker .rule-line { min-height:calc(var(--row-min-lines,2) * 1.05em); }
/* Repere de fin de texte (ajoute par fitCardText) : sa boite couvre
     exactement la derniere ligne, pour mesurer ou le texte finit vraiment. */
.pcard .line-end { display:inline-block; width:0; height:1lh; vertical-align:top; }

.pcard .pt-line-spacer { display:block; pointer-events:none; }

.pcard .loyalty-badge {
    flex-shrink:0; min-width:20px; padding:0 3px; height:15px; border-radius:8px;
    display:flex; align-items:center; justify-content:center;
    font-family:"IBM Plex Mono", monospace; font-size:9px; font-weight:500;
    color:#fff; background:#6b5b2c; margin-top:1px;
  }
/* Planeswalker uniquement : badge +/- en image (84x62) a la place du rond uni.
     Cale en haut du cadre plutot que centre sur la ligne. Taille pilotee par
     --badge-scale, que fitCardText() regle pour que le badge fasse la hauteur
     de 2 lignes de texte (plafonne a sa taille nominale, 1). */
.pcard .mtg-card.planeswalker .rules { --badge-scale:1; --badge-grow:1.3; --bs:calc(var(--badge-scale,1) * var(--badge-grow,1)); }

.pcard .loyalty-badge.planeswalker {
    width:calc(26px * var(--bs,1)); height:calc(17.33px * var(--bs,1));
    min-width:calc(26px * var(--bs,1)); padding:0; border-radius:0;
    background-color:transparent; background-size:100% 100%; background-repeat:no-repeat;
    color:#f0ead6; font-size:calc(8px * var(--bs,1));
    align-self:flex-start; position:relative;
  }
/* Le signe (+/-) est sorti du flux et decale vers la gauche du badge ; le
     chiffre seul reste dans le flux, donc centre par le justify-content:center
     herite de .loyalty-badge. Centre verticalement (top:50%/translateY(-50%))
     pour etre au meme niveau que le chiffre par defaut -- le "-" reste sur
     cette base, seul le "+" a un reglage vertical en plus (voir plus bas).
     Les deux (signe et chiffre, + et -) sont decales de 1px vers la droite.
     Tous les decalages en px sont multiplies par --badge-scale, pour que le
     signe/chiffre redescendent proportionnellement quand le badge retrecit
     (beaucoup de capacites, ex. 5) au lieu de garder un decalage fixe qui
     devient trop grand relativement a un petit badge. *//* --sign-count-adjust : le signe "+"/"-" descend d'1px de plus quand il y a
     5 capacites (voir .rules-loyalty-5, classe posee par cardHtml()). Ne
     touche que le signe, pas le chiffre. */
.pcard .rules { --sign-count-adjust:0px; }

.pcard .rules.rules-loyalty-5 { --sign-count-adjust:1px; }

.pcard .loyalty-badge.planeswalker .loyalty-badge-sign {
    position:absolute; left:20%; top:50%;
    transform:translateY(calc(-50% - 3px * var(--bs,1) + var(--sign-count-adjust,0px))) translateX(calc(1px * var(--bs,1)));
  }

.pcard .loyalty-badge.planeswalker .loyalty-badge-num {
    transform:translateY(calc(-1px * var(--bs,1))) translateX(calc(1px * var(--bs,1)));
  }
/* Signe et chiffre du badge "+" descendus de 2px de plus (signe trop haut). */
.pcard .loyalty-badge.planeswalker.loyalty-badge-plus .loyalty-badge-sign {
    transform:translateY(calc(-50% + 2px * var(--bs,1) + var(--sign-count-adjust,0px))) translateX(calc(1px * var(--bs,1)));
  }

.pcard .loyalty-badge.planeswalker.loyalty-badge-plus .loyalty-badge-num {
    transform:translateY(calc(2px * var(--bs,1))) translateX(calc(1px * var(--bs,1)));
  }
/* Badges +1/-1/-7 agrandis de 80% puis reduits de 20% par rapport au badge
     de base (soit +44% au final), decales a gauche. */
.pcard .loyalty-badge.planeswalker.loyalty-badge-plus,
.pcard .loyalty-badge.planeswalker.loyalty-badge-minus,
.pcard .loyalty-badge.planeswalker.loyalty-badge-neutre {
    width:calc(37.44px * var(--bs,1)); height:calc(24.96px * var(--bs,1));
    min-width:calc(37.44px * var(--bs,1)); font-size:calc(11.52px * var(--bs,1));
    /* Le decalage compense la largeur perdue en retrecissant, pour que le
       bord DROIT du badge (cote texte) reste fixe -- sans ca, retrecir le
       laissait deriver vers la gauche au lieu de rester colle au texte. */
    transform:translateX(calc(17.44px - 37.44px * var(--bs,1)));
    /* --badge-overflow (fitCardText) : part du badge qui depasse 2 lignes de
       texte, quand le plancher de taille l'impose. Elle deborde a moitie
       au-dessus / au-dessous dans l'espace entre capacites (cote gauche, sans
       texte) au lieu d'agrandir la ligne -- sinon le badge redevient un
       plancher de hauteur par ligne. */
    margin-top:calc(1px - var(--badge-overflow-top,0px));
    margin-bottom:calc(var(--badge-overflow-top,0px) - var(--badge-overflow,0px));
  }
/* Le texte du badge "-" est un peu bas : remonte de 2px (padding-bottom,
     box-sizing:border-box donc la boite du badge ne grandit pas -- seul le
     contenu centre par align-items:center se retrouve decale vers le haut). */
.pcard .loyalty-badge.planeswalker.loyalty-badge-minus { padding-bottom:calc(2px * var(--bs,1)); }
/* Meme debordement en haut de la 1ere ligne et en bas de la derniere :
     reserve une seule fois aux extremites du bloc (pas a chaque ligne), et
     seulement pour la part qui ne tient pas deja dans le padding de
     .zone-text (--badge-overflow-reserve, calcule par fitCardText). */
.pcard .mtg-card.planeswalker .rules { padding-block:var(--badge-overflow-reserve,0px); }

.pcard .keyword { font-weight:600; }

.pcard .kw-badge { display:inline-flex; align-items:center; gap:4px; vertical-align:-0.25em; }

.pcard .kw-badge .kw-icon {
    width:14px; height:14px; border-radius:50%; background:#6b5b2c;
    display:inline-flex; align-items:center; justify-content:center; padding:2px;
    box-shadow:0 0 0 1px rgba(0,0,0,.4); flex-shrink:0;
    transform:scaleY(0.952381); /* annule le scaleY(1.05) herite de .zone-text */
  }

.pcard .kw-badge .kw-icon img { width:100%; height:100%; object-fit:contain; }

.pcard .divider {
    height:2px; margin-block:2px;
    background:linear-gradient(to bottom, rgba(30,26,18,.22) 1px, rgba(255,255,255,.45) 1px);
    -webkit-mask-image:linear-gradient(to right, transparent 0, black 10px, black calc(100% - 10px), transparent 100%);
    mask-image:linear-gradient(to right, transparent 0, black 10px, black calc(100% - 10px), transparent 100%);
  }

.pcard .flavor { font-family:"PlantinStd","Source Serif 4", serif; font-style:italic; font-weight:300; font-size:clamp(10px,2.1vw,12px); line-height:1.05; transform:translateY(-5px); margin-top:6px; }

.pcard .pip {
    width:19px; height:19px; border-radius:50%; flex-shrink:0;
    display:inline-flex; align-items:center; justify-content:center;
    font-family:"IBM Plex Mono", monospace; font-weight:500; font-size:9px;
    border:1px solid rgba(0,0,0,.55); line-height:1;
  }

.pcard .pip.n { background:#d8d2c2; color:#2a2620; }

.pcard .pip.X { background:#d8d2c2; color:#2a2620; }

.pcard .pip.inline { width:calc(1.3em + 1px); height:calc(1.3em + 1px); font-size:.62em; vertical-align:-0.22em; margin-inline:.03em; transform:translateY(-1px) scaleY(0.952381); }

.pcard .pip-group { display:inline-flex; align-items:center; white-space:nowrap; vertical-align:-0.22em; }

.pcard .pip.real { border:none; background:none; padding:0; position:relative; }

.pcard .pip.real img { width:100%; height:100%; display:block; }
/* Repli affiche seulement si l'<img> echoue a charger (onerror, voir pipHtml) --
     symbole compose sans icone dediee (ex. hybride phyrexian "G/W/P"). */
.pcard .pip.real .pip-fallback {
    display:none; position:absolute; inset:0; border-radius:50%;
    background:#d8d2c2; color:#2a2620; border:1px solid rgba(0,0,0,.55);
    align-items:center; justify-content:center; box-sizing:border-box;
    font-family:"IBM Plex Mono", monospace; font-weight:500; line-height:1;
    font-size:5.5px; letter-spacing:-.02em; padding:1px; text-align:center; overflow:hidden;
  }

.pcard .zone-pt {
    position:absolute; z-index:3; right:calc(5% + 1px); bottom:5%; width:63.87px; height:30px;
    display:flex; align-items:center; justify-content:center;
    font-family:"Beleren","Spectral",serif; font-weight:700; font-size:clamp(14px,calc(2.9vw + 2px),19px);
    background-size:100% 100%; background-repeat:no-repeat;
  }
/* Planeswalker uniquement : ecusson PV (126x77) a la place du cadre Att/Def
     normal. Agrandi de 5px en largeur (61px, hauteur au meme ratio ~37.04px)
     sans toucher a font-size (le chiffre dedans ne bouge pas). Comme
     .zone-pt est ancre par right/bottom, on les reduit d'autant (5px / 3.04px)
     pour que le coin haut-gauche reste fixe et que l'agrandissement se fasse
     vers la droite et le bas, pas vers la gauche et le haut. */
.pcard .zone-pt.planeswalker {
    width:61px; height:37.04px;
    right:calc(5% - 4px); bottom:calc(5% - 3.04px);
    padding-top:2px; /* descend le chiffre de 2px (box-sizing:border-box, la boite ne grandit pas) */
  }

.pcard .zone-pt::before {
    content:""; position:absolute; inset:0; z-index:-1;
    background-image:inherit; background-size:100% 100%; background-repeat:no-repeat;
    filter:drop-shadow(-3px 3px 4px rgba(0,0,0,.55));
  }
/* --- integration site : carte a taille fixe 340px reduite/agrandie par transform (JS : CarteRender.mount) --- */
.pcard{ position:relative; display:block; width:100%; aspect-ratio:492/688; container-type:inline-size; }
.pcard .pcard__inner{ position:absolute; left:0; top:0; width:340px; transform-origin:0 0;
  transform:scale(tan(atan2(100cqw, 340px))); } /* echelle = largeur de la case / 340px, sans JS (marche aussi a l'impression) */
.pcard .mtg-card{ width:100%; }
/* isolement du CSS global du site (la page des fiches a body/*{box-sizing} par defaut) */
.pcard, .pcard *, .pcard *::before, .pcard *::after{ box-sizing:border-box; }
.pcard{ line-height:normal; letter-spacing:normal; text-align:left; text-transform:none; font-size:16px; font-weight:400; font-style:normal;
  font-family:"IBM Plex Sans", ui-sans-serif, system-ui, sans-serif; color:#1c1710; text-shadow:none; }
.pcard img{ max-width:none; }
.pcard .pcard__inner img{ max-width:none; }
.pcard{ --ink:#22201a; --ink-dim:#6b6558; --line:rgba(30,26,18,0.14); --panel:#ffffff; --accent:#8a6a2e; --page-bg:#eeece4; }

/* Texte des badges +/- Planeswalker : signe et chiffre sont un seul bloc "+1" centre en hauteur et en largeur dans le badge
   (plus de signe sorti du flux ni de decalages au pixel). */
.pcard .loyalty-badge.planeswalker { align-items:center; justify-content:center; gap:0; line-height:1; padding:0; }
.pcard .loyalty-badge.planeswalker .loyalty-badge-sign,
.pcard .loyalty-badge.planeswalker.loyalty-badge-plus .loyalty-badge-sign,
.pcard .loyalty-badge.planeswalker .loyalty-badge-num,
.pcard .loyalty-badge.planeswalker.loyalty-badge-plus .loyalty-badge-num {
    position:static; transform:none; display:block; line-height:1;
  }
/* Ajustement fin du texte dans les badges : "+" descend de 2px, "-" remonte de 2px */
.pcard .loyalty-badge.planeswalker.loyalty-badge-plus .loyalty-badge-sign,
.pcard .loyalty-badge.planeswalker.loyalty-badge-plus .loyalty-badge-num { transform:translateY(2px); }
.pcard .loyalty-badge.planeswalker.loyalty-badge-minus .loyalty-badge-sign,
.pcard .loyalty-badge.planeswalker.loyalty-badge-minus .loyalty-badge-num { transform:translateY(-2px); }
.pcard .loyalty-badge.planeswalker.loyalty-badge-minus { padding-bottom:0; }  /* l'ancien remontage par padding est remplace par le translateY ci-dessus */
/* Badge neutre (0) : image 84x51 (plus plate que +/-, 84x56) ; texte non decale, centre dans le badge */
.pcard .loyalty-badge.planeswalker.loyalty-badge-neutre { height:calc(22.73px * var(--bs,1)); }
.pcard .loyalty-badge.planeswalker.loyalty-badge-neutre .loyalty-badge-sign { display:none; }
.pcard .loyalty-badge.planeswalker.loyalty-badge-neutre .loyalty-badge-num { transform:none; }
/* Mot + symbole(s) de mana qui le suivent : jamais coupes en fin de ligne (le symbole ne commence pas une ligne) */
.pcard .nowrap { white-space:nowrap; }

/* ---- Sagas : cadres dédiés, placement dans js/saga-layout.js ---- */
.pcard .mtg-card.saga { background:#d9d6cc; }
.pcard .saga-box { overflow:hidden; color:#1c1710; font-family:"PlantinStd","Beleren","IBM Plex Sans",serif; font-weight:600; line-height:1.08; }
.pcard .saga-fit { min-height:100%; display:flex; flex-direction:column; font-size:12px; }
.pcard .saga-chapters { overflow:visible; }
.pcard .saga-chapters .saga-fit { overflow:visible; }
.pcard .saga-ch { position:relative; flex:1 1 auto; display:flex; align-items:center; padding:1px 0; }
.pcard .saga-txt { flex:1 1 auto; min-width:0; }
.pcard .saga-nums { position:absolute; top:50%; transform:translateY(-50%); display:flex; flex-direction:column; align-items:center; z-index:4; }
.pcard .saga-hex { display:flex; align-items:center; justify-content:center; background:center/100% 100% no-repeat url(../images/carte/saga-chiffre.png);
  font-family:"PlantinStd","Spectral",serif; font-weight:700; color:#2b2410; line-height:1; flex-shrink:0; }
.pcard .saga-sep { flex:0 0 auto; display:flex; align-items:center; }
.pcard .saga-sep img { width:100%; height:2px; display:block; object-fit:fill; }
.pcard .saga-top .saga-fit,
.pcard .saga-bottom .saga-fit { justify-content:center; }
.pcard .saga-line + .saga-line { margin-top:3px; }
.pcard .saga-pt { z-index:4; }
.pcard .saga-reminder { font-style:italic; font-weight:500; }
/* Sagas : symbole d'extension plus grand (+30 %) et décalé de 2px vers la gauche */
/* Sagas : le symbole d'extension remplit le bloc « extension » du placement (il y tient en hauteur ou en largeur, centré) */
.pcard .saga-gem { display:flex; align-items:center; justify-content:center; }
.pcard .mtg-card.saga .saga-gem .rarity-gem { position:static; transform:none; width:100%; height:100%; max-width:none; }
.pcard .mtg-card.saga .saga-gem .rarity-gem svg { width:100%; height:100%; }
/* Sagas-créatures : texte du bas centré */
.pcard .saga-bottom .saga-fit { text-align:center; align-items:center; }
/* Toutes les cartes : le symbole d'extension remplit un bloc fixe (comme sur les sagas), au maximum en hauteur ou en largeur, centré */
.pcard .mtg-card:not(.saga) .rarity-gem { width:30px; height:19px; max-width:none; display:flex; align-items:center; justify-content:center; }
.pcard .mtg-card:not(.saga) .rarity-gem svg { width:100%; height:100%; }
/* symbole d'extension en image (PNG MTGA) : jamais déformé, il tient dans le bloc en gardant son ratio */
.pcard .rarity-gem[src] { object-fit:contain; }
.pcard .mtg-card.saga .saga-gem img.rarity-gem { position:static; transform:none; width:100%; height:100%; max-width:none; }
