/* One material on the whole card. Individual rotate composes with reveal/hover transforms. */
[data-card-foil] {
    --foil-x: 50%; --foil-y: 45%; --foil-angle: 125deg; --foil-sweep: 0%;
    position: relative; isolation: isolate;
    rotate: var(--foil-axis-x, 1) var(--foil-axis-y, 1) 0 var(--foil-tilt, 0deg);
}
/* Replace every old sweep, including the unique-rarity override on foil cards. */
[data-card-foil]::after { display: none !important; }
[data-card-foil] > .card-foil {
    position: absolute; inset: 0; z-index: 2; pointer-events: none;
    overflow: hidden; border-radius: inherit; opacity: .55;
    background-position: var(--foil-x) var(--foil-y);
    mask-image: var(--foil-image-mask, none); mask-size: 100% 100%; mask-repeat: no-repeat; mask-position: center;
}
.card-foil::after { content: ''; position: absolute; inset: -30%; background: linear-gradient(115deg, transparent 33%, #fff2 42%, #fffc 49%, #fff4 52%, transparent 62%); transform: translateX(var(--foil-sweep)); }
[data-card-foil="pearl"] > .card-foil { background-image: linear-gradient(var(--foil-angle), #76d9d722, #e6aff344, #ffecc633, #83bcff33); background-size: 200% 200%; mix-blend-mode: screen; }
[data-card-foil="pearl"] > .card-foil::after { background: linear-gradient(115deg, transparent 30%, #42e9e933 39%, #70e9ff77 44%, #fff 48%, #fff9 50%, #ef8bc788 54%, #d098f433 59%, transparent 66%); }
[data-card-foil="prism"] > .card-foil { background-image: repeating-linear-gradient(var(--foil-angle), #ed438a 0%, #e2b342 12%, #49c9b0 24%, #4484cf 36%, #bd5fcf 48%, #ed438a 60%); background-size: 250% 250%; mix-blend-mode: color-dodge; mask-image: var(--foil-image-mask, linear-gradient(#000, #000)), radial-gradient(ellipse at var(--foil-x) var(--foil-y), #000 8%, #000b 35%, transparent 85%); mask-composite: intersect; }
[data-card-foil="prism"] > .card-foil::before { content: ''; position: absolute; inset: 0; background: conic-gradient(from 30deg, #fff9 0deg 60deg, #141329cc 60deg 120deg, #fff3 120deg 180deg, #08092499 180deg 240deg, #fff8 240deg 300deg, #192843cc 300deg); background-size: 42px 65px; mix-blend-mode: overlay; }
[data-card-foil="brushed"] > .card-foil { background-image: repeating-radial-gradient(ellipse at 15% 120%, #fff7 0 .6px, #15212b55 1px 2.5px, transparent 3px 5px), linear-gradient(var(--foil-angle), #041b3177 20%, #8d9faf99 40%, #fff 48%, #27405cbb 56%, #8d9faf55 70%); background-size: 100% 100%, 200% 200%; background-position: center, var(--foil-x) var(--foil-y); mix-blend-mode: hard-light; }
[data-card-foil="brushed"] > .card-foil::after { opacity: .45; }
[data-card-foil="gold"] > .card-foil { background-image: repeating-radial-gradient(ellipse at 0 50%, #ffe4a977 0 .7px, transparent 1.4px 8px), repeating-radial-gradient(ellipse at 100% 50%, #fff1a877 0 .7px, transparent 1.4px 8px), linear-gradient(var(--foil-angle), #512b1688 10%, #b2813988 35%, #ffe29ddd 48%, #63421aaa 58%, #be923c55 85%); background-size: 100% 100%, 100% 100%, 220% 220%; background-position: center, center, var(--foil-x) var(--foil-y); mix-blend-mode: hard-light; }
[data-card-foil="gold"] > .card-foil::after { background: linear-gradient(115deg, transparent 36%, #ffd36855 44%, #fff8d9ee 49%, #ffce7244 55%, transparent 65%); }
[data-card-foil="carbon"] > .card-foil {
    opacity: .47;
    background-image: repeating-linear-gradient(45deg, #07121b88 0 2px, #8196a333 2px 4px, transparent 4px 8px), repeating-linear-gradient(-45deg, #09121e66 0 2px, #dce8f433 2px 4px, transparent 4px 8px), linear-gradient(var(--foil-angle), #07111a77 20%, #9fbbc566 43%, #ecf8ffbb 49%, #12233288 56%, transparent 78%);
    background-size: 100% 100%, 100% 100%, 240% 240%; background-position: center, center, var(--foil-x) var(--foil-y); mix-blend-mode: hard-light;
}
[data-card-foil="carbon"] > .card-foil::after { background: linear-gradient(115deg, transparent 43%, #c4e7ff55 48%, #fff9 50%, transparent 55%); opacity: .5; }

/* The profile option stops ambient tilt; an explicit pointer gesture still steers the card. */
.motion-reduced [data-card-foil]:not(.foil-pointer-active) { rotate: none; }
