/* Carta 3D no combate (tilt.js). As variáveis --rx, --ry, --mx, --my, --px, --py, --pd e --tilt ficam na própria carta. */
.duelHand .card.duel.tilt{transform:perspective(760px) translateY(calc(var(--lift,0) * -6px)) scale(calc(1 + var(--lift,0) * .05)) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))!important;
 transition:box-shadow .18s,filter .3s,opacity .3s;z-index:5;will-change:transform;
 box-shadow:calc(var(--px,0) * -14px) calc(18px + var(--py,0) * -10px) 34px #000d,0 0 0 2px #e8c98bcc,0 0 22px #e8c98b66}
.duelHand .card.duel.tilt:is(.selected,.suggested){transform:perspective(760px) translateY(-12px) scale(1.05) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))!important;z-index:6}
/* Brilho que segue o cursor: uma luz suave e um reflexo em faixa, os dois somem quando a carta para. */
.card.duel .tiltGlare{position:absolute;inset:0;z-index:4;pointer-events:none;border-radius:inherit;opacity:var(--tilt,0);mix-blend-mode:soft-light;
 background:radial-gradient(circle at var(--mx,50%) var(--my,50%),#fffffff0 0%,#ffffff55 22%,transparent 58%),
  linear-gradient(calc(110deg + var(--px,0) * 25deg),transparent 35%,#ffffff40 calc(48% + var(--py,0) * 10%),transparent 62%)}
.card.duel .tiltGlare::after{content:'';position:absolute;inset:0;border-radius:inherit;mix-blend-mode:overlay;opacity:.55;background:radial-gradient(circle at var(--mx,50%) var(--my,50%),#fff6 0%,transparent 40%)}
/* A faixa "Duelo · Aprendiz" e a trilha de rounds continuam acima de qualquer carta inclinada ou escolhida. */
.midLine{z-index:7}
@media(prefers-reduced-motion:reduce){.card.duel .tiltGlare{display:none}}
.reduced .card.duel .tiltGlare{display:none}

/* Modal de mana (#pickCard): a carta inclina como no campo. No modal de ficha quem inclina é o .ciCard (balanço sozinho + mouse); o .ciReal só recebe o brilho. */
#pickDialog #pickCard .card.duel.tilt{transform:perspective(760px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))!important;transition:none}

/* Giro sem encolher (Leo, 04/10/2026): ao girar, a carta fica mais estreita (a largura vira largura × cos(ângulo)) e o texto encolhe junto.
   A compensação alarga a carta por 1/cos(ângulo) ANTES de girar, então a largura que se vê continua a mesma. Só em navegadores que sabem cos(). */
@supports (scale:calc(1 / cos(10deg))){
.duelHand .card.duel.tilt{transform:perspective(1100px) translateY(calc(var(--lift,0) * -6px)) scale(calc(1 + var(--lift,0) * .05)) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) scale(calc(1 / cos(var(--ry,0deg))),calc(1 / cos(var(--rx,0deg))))!important}
.duelHand .card.duel.tilt:is(.selected,.suggested){transform:perspective(1100px) translateY(-12px) scale(1.05) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) scale(calc(1 / cos(var(--ry,0deg))),calc(1 / cos(var(--rx,0deg))))!important}
#pickDialog #pickCard .card.duel.tilt{transform:perspective(1100px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) scale(calc(1 / cos(var(--ry,0deg))),calc(1 / cos(var(--rx,0deg))))!important}
.boosterPack.tilt{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) scale(calc((1 + var(--lift,0) * .04) / cos(var(--ry,0deg))),calc((1 + var(--lift,0) * .04) / cos(var(--rx,0deg))))}
#cardInfo .ciCard{transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) scale(calc(1 / cos(var(--ry,0deg))),calc(1 / cos(var(--rx,0deg))))}
}

/* Coleção (Leo, 04/10/2026): as cartas da grade balançam em 3D como nas do combate. Elevação menor, para não invadir as vizinhas. */
#colGrid .card.duel.tilt{transform:perspective(1100px) translateY(calc(var(--lift,0) * -4px)) scale(calc(1 + var(--lift,0) * .04)) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))!important;
 transition:box-shadow .18s,filter .3s,opacity .3s;z-index:5;will-change:transform;
 box-shadow:calc(var(--px,0) * -12px) calc(14px + var(--py,0) * -8px) 28px #000c,0 0 0 2px #e8c98bcc,0 0 18px #e8c98b55}
@supports (scale:calc(1 / cos(10deg))){
#colGrid .card.duel.tilt{transform:perspective(1100px) translateY(calc(var(--lift,0) * -4px)) scale(calc(1 + var(--lift,0) * .04)) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) scale(calc(1 / cos(var(--ry,0deg))),calc(1 / cos(var(--rx,0deg))))!important}
}
