/* Every pack supplies a complete set of inherited values. A preview scope
   therefore cannot pick up the equipped deck's structural card rules. */
:is(body,.card-pack-scope):is(.pack-classic,.pack-minimal,.pack-ink,.pack-zen,.pack-shadow,.pack-rainbow,.pack-space,.pack-neon,.pack-quest) {
  --deck-font:var(--ui-display,'Tektur',sans-serif);
  --card-stock:linear-gradient(180deg,#fffefa,#f8f4e9);
  --card-stock-joker:linear-gradient(180deg,#fff4c9,#f2c83f);
  --deck-border:2px solid #292025;
  --deck-radius:7px;
  --deck-shadow:2px 3px 0 #20191f66;
  --deck-red:#c63242;
  --deck-black:#251c29;
  --deck-index-x:8%;
  --deck-index-y:6%;
  --deck-index-shadow:0 1px 1px #20172835;
  --deck-suit-shadow:var(--deck-index-shadow);
  --deck-rank-size:22cqw;
  --deck-wide-size:19cqw;
  --deck-suit-size:17cqw;
  --deck-pip-size:20cqw;
  --deck-ace-size:52cqw;
  --deck-body-inset:23% 34%;
  --deck-court-inset:17% 9%;
  --deck-bottom-index:flex;
  --deck-pips:block;
  --deck-watermark:none;
  --deck-keyline:1px solid #29202520;
  --deck-blossom:none;
  --card-back:url('../assets/art/classic-back-v49.webp') center/100% 100%;
  --ink-suit-display:none;
  --suit-text-color:currentColor;
  --suit-art-width:auto;
  --suit-art-height:auto;
  --court-atlas:url('../assets/art/courts-classic-v45.webp');
}
:is(body,.card-pack-scope).pack-minimal {
  --card-back:url('../assets/art/minimal-back-v49.webp') center/100% 100%;
  --card-stock:#fbf9f4;
  --card-stock-joker:#f8eecb;
  --deck-border:2px solid #cdc5b6;
  --deck-shadow:2px 3px 0 #20191f33;
  --deck-rank-size:27cqw;
  --deck-wide-size:23cqw;
  --deck-suit-size:18cqw;
  --deck-pips:none;
  --deck-bottom-index:none;
  --deck-watermark:block;
  --deck-keyline:0;
  --deck-court-inset:29% 9% 5%;
  --court-atlas:url('../assets/art/courts-minimal-v45.webp');
}
:is(body,.card-pack-scope).pack-ink {
  --card-stock:#f6ead1 url('../assets/art/ink-paper-v45.webp') center/100% 100%;
  --card-stock-joker:#f4e0ac;
  --deck-border:2px solid #6b4b37;
  --deck-radius:6px;
  --deck-red:#ab443d;
  --deck-black:#3d3029;
  --deck-keyline:0;
  --deck-font:'Tektur',sans-serif;
  --deck-rank-size:22cqw;
  --deck-wide-size:19cqw;
  --deck-suit-size:17cqw;
  --ink-suit-display:block;
  --deck-suit-shadow:none;
  --suit-text-color:transparent;
  --suit-art-width:1em;
  --suit-art-height:1em;
  --card-back:url('../assets/art/ink-back-v49.webp') center/100% 100%;
  --court-atlas:url('../assets/art/courts-ink-v45.webp');
}
:is(body,.card-pack-scope).pack-zen {
  --card-back:url('../assets/art/zen-back-v49.webp') center/100% 100%;
  --card-stock:url('../assets/art/zen-face-v49.webp') center/100% 100%;
  --card-stock-joker:#f1d3d9;
  --deck-border:2px solid #cdb2a6;
  --deck-shadow:0 3px 0 #7850504d;
  --deck-red:#b54a4d;
  --deck-black:#40313c;
  --deck-keyline:0;
  --court-atlas:url('../assets/art/courts-zen-v45.webp');
}
.card {
  background:var(--card-stock);
  border:var(--deck-border);
  border-radius:var(--deck-radius);
  font-family:var(--deck-font);
  box-shadow:var(--deck-shadow);
}
.card.suit-red,.table-card.suit-red {color:var(--deck-red);}
.card.suit-black,.table-card.suit-black {color:var(--deck-black);}
.card.is-joker {background:var(--card-stock-joker);}
.cardface::after {content:'';position:absolute;inset:4.5%;border:var(--deck-keyline);border-radius:3px;pointer-events:none;}
.cf-rank,.cf-suit,.cf-pip,.cf-ace,.cf-joker-word {font-family:var(--deck-font);font-weight:700;}
.card .cf-rank,.table-card .tc-rank,.discard-pile .table-card .tc-rank {font-family:var(--deck-font)!important;}
.cf-rank {font-size:var(--deck-rank-size);}
.cf-rank.wide {font-size:var(--deck-wide-size);}
.cf-suit {font-size:var(--deck-suit-size);}
.cf-idx-br {display:var(--deck-bottom-index);}
.cf-body {inset:var(--deck-body-inset);}
.cf-pip {display:var(--deck-pips);font-size:var(--deck-pip-size);rotate:0deg;}
.cf-ace {font-size:var(--deck-ace-size);}
.cf-body:not(.cf-body-court):not(:has(.cf-ace))::after {content:attr(data-suit);display:var(--deck-watermark);position:absolute;right:-20%;bottom:-15%;font-size:65cqw;opacity:.14;line-height:1;}
.cf-body-court {inset:var(--deck-court-inset);}
.court-portrait {position:absolute;left:50%;top:50%;width:100%;aspect-ratio:1;transform:translate(-50%,-50%);background-image:var(--court-atlas);background-size:300% 400%;background-position:var(--court-x) var(--court-y);background-repeat:no-repeat;image-rendering:pixelated;}
.table-card {background:var(--card-stock);border-color:var(--deck-black);font-family:var(--deck-font);}
.table-card.is-joker {background:var(--card-stock-joker);}
[data-suit="♠"] {--ink-pip:url('../assets/art/ink-spade-v45.webp');}
[data-suit="♥"] {--ink-pip:url('../assets/art/ink-heart-v45.webp');}
[data-suit="♦"] {--ink-pip:url('../assets/art/ink-diamond-v45.webp');}
[data-suit="♣"] {--ink-pip:url('../assets/art/ink-club-v45.webp');}
.cf-pip,.cf-ace,.cf-suit {color:var(--suit-text-color);}
.cf-suit {position:relative;width:var(--suit-art-width);height:var(--suit-art-height);}
.cf-pip::after,.cf-ace::after,.cf-suit::after {content:'';display:var(--ink-suit-display);position:absolute;inset:0;background:var(--ink-pip) center/contain no-repeat;image-rendering:pixelated;}

.stock-pile,.fly-back,.practice-back,.cosmetic-preview-back-real {image-rendering:pixelated;}

:is(body,.card-pack-scope).pack-shadow {
 --deck-index-shadow:0 1px 1px #100e20e0,1px 0 1px #100e2080;
 --deck-index-y:6%;
 --deck-index-x:8%;
 --card-stock:url('../assets/art/shadow-face-v49.webp') center/100% 100%;
 --card-back:url('../assets/art/shadow-back-v49.webp') center/100% 100%;
 --court-atlas:url('../assets/art/courts-shadow-v48.webp');
 --deck-court-inset:16% -8%;
 --deck-border:1px solid #211729;
 --deck-red:#ff98b5;
 --deck-black:#fff0d1;
 --deck-keyline:0;
 --card-stock-joker:#ffedb0;
}

:is(body,.card-pack-scope).pack-rainbow {
 --deck-index-y:6%;
 --deck-index-x:8%;
 --card-stock:url('../assets/art/rainbow-face-v49.webp') center/100% 100%;
 --card-back:url('../assets/art/rainbow-back-v49.webp') center/100% 100%;
 --court-atlas:url('../assets/art/courts-rainbow-v48.webp');
 --deck-court-inset:16% -8%;
 --deck-border:1px solid #d5ba9c;
 --deck-red:#a12846;
 --deck-black:#30283c;
 --deck-keyline:0;
 --card-stock-joker:#ffedb0;
}

:is(body,.card-pack-scope).pack-space {
 --deck-index-shadow:0 1px 1px #100e20e0,1px 0 1px #100e2080;
 --deck-index-y:6%;
 --deck-index-x:8%;
 --card-stock:url('../assets/art/space-face-v49.webp') center/100% 100%;
 --card-back:url('../assets/art/space-back-v58.webp') center/100% 100%;
 --court-atlas:url('../assets/art/courts-space-v48.webp');
 --deck-court-inset:16% -8%;
 --deck-border:1px solid #211729;
 --deck-red:#ff98b5;
 --deck-black:#fff0d1;
 --deck-keyline:0;
 --card-stock-joker:#ffedb0;
}

:is(body,.card-pack-scope).pack-neon {
 --deck-index-shadow:0 1px 1px #100e20e0,1px 0 1px #100e2080;
 --deck-index-y:6%;
 --deck-index-x:8%;
 --card-stock:url('../assets/art/neon-face-v49.webp') center/100% 100%;
 --card-back:url('../assets/art/neon-back-v58.webp') center/100% 100%;
 --court-atlas:url('../assets/art/courts-neon-v48.webp');
 --deck-court-inset:16% -8%;
 --deck-border:1px solid #211729;
 --deck-red:#ff98b5;
 --deck-black:#fff0d1;
 --deck-keyline:0;
 --card-stock-joker:#ffedb0;
}

:is(body,.card-pack-scope).pack-quest {
 --deck-index-shadow:0 1px 1px #100e20e0,1px 0 1px #100e2080;
 --deck-index-y:6%;
 --deck-index-x:8%;
 --card-stock:url('../assets/art/quest-face-v49.webp') center/100% 100%;
 --card-back:url('../assets/art/quest-back-v58.webp') center/100% 100%;
 --court-atlas:url('../assets/art/courts-quest-v48.webp');
 --deck-court-inset:16% -8%;
 --deck-border:1px solid #211729;
 --deck-red:#ff98b5;
 --deck-black:#fff0d1;
 --deck-keyline:0;
 --card-stock-joker:#ffedb0;
}

/* Jokers share the familiar animal anatomy and each pack’s authored costume. */
:is(body,.card-pack-scope).pack-classic {--joker-art:url('../assets/art/joker-classic-v49.webp');}
:is(body,.card-pack-scope).pack-minimal {--joker-art:url('../assets/art/joker-minimal-v49.webp');}
:is(body,.card-pack-scope).pack-ink {--joker-art:url('../assets/art/joker-ink-v49.webp');}
:is(body,.card-pack-scope).pack-zen {--joker-art:url('../assets/art/joker-zen-v49.webp');}
:is(body,.card-pack-scope).pack-shadow {--joker-art:url('../assets/art/joker-shadow-v49.webp');}
:is(body,.card-pack-scope).pack-rainbow {--joker-art:url('../assets/art/joker-rainbow-v49.webp');}
:is(body,.card-pack-scope).pack-quest {--joker-art:url('../assets/art/joker-quest-v49.webp');}
:is(body,.card-pack-scope).pack-neon {--joker-art:url('../assets/art/joker-neon-v49.webp');}
:is(body,.card-pack-scope).pack-space {--joker-art:url('../assets/art/joker-space-v49.webp');}
/* v50 premium materials: art stays between the conventional reading corners. */
:is(body,.card-pack-scope):is(.pack-shadow,.pack-quest,.pack-space,.pack-neon) {
 --deck-court-inset:28% 0%;
 --deck-index-x:8%;--deck-index-y:6%;
 --deck-index-shadow:0 1px 1px #0006;
}
:is(body,.card-pack-scope).pack-shadow {--card-stock:#270d38 url('../assets/art/shadow-face-v61.webp') center/100% 100%;--deck-black:#fff0d8;--deck-red:#ffbdcf;}
:is(body,.card-pack-scope).pack-space {--card-stock:#07142e url('../assets/art/space-face-v61.webp') center/100% 100%;--deck-black:#fff5d9;--deck-red:#ffbfce;}
:is(body,.card-pack-scope).pack-quest {--card-stock:#fff0d0 url('../assets/art/quest-face-v61.webp') center/100% 100%;--deck-black:#36251f;--deck-red:#a22439;--deck-index-shadow:0 1px 1px #fff9;--deck-border:1px solid #94733b;}
:is(body,.card-pack-scope).pack-neon {--card-stock:#d9efff url('../assets/art/neon-face-v61.webp') center/100% 100%;--card-stock-joker:#eff7ff;--card-back:url('../assets/art/neon-back-v58.webp') center/100% 100%;--court-atlas:url('../assets/art/courts-neon-v50.webp');--joker-art:url('../assets/art/joker-neon-v50.webp');--deck-black:#263c61;--deck-red:#872653;--deck-index-shadow:0 1px 1px #fff9;--deck-border:1px solid #7d9bbb;}
:is(body,.card-pack-scope).pack-rainbow {--joker-art:url('../assets/art/joker-rainbow-v50.webp');}

:is(body,.card-pack-scope).pack-neon {--deck-court-inset:28% 8%;}

:is(body,.card-pack-scope).pack-shadow {--deck-court-inset:28% 5%;}
:is(body,.card-pack-scope).pack-quest {--deck-court-inset:28% 4%;}
:is(body,.card-pack-scope).pack-space {--deck-court-inset:28% 6.5%;}
:is(body,.card-pack-scope).pack-neon {--deck-court-inset:28% 9%;}

/* A travelling card retains exactly the same deck inks and frame. The old
   flight skin briefly replaced custom suit colours with the UI's red. */
.flying .fly-face{border:var(--deck-border);border-radius:var(--deck-radius);box-shadow:var(--deck-shadow);font-family:var(--deck-font);}
.flying.suit-red .fly-face{color:var(--deck-red);}
.flying.suit-black .fly-face{color:var(--deck-black);}
.flying.is-joker .fly-face{color:#33243a;}
.flying .fly-face :is(.cf-rank,.cf-suit,.cf-pip,.cf-ace,.cf-joker-word){font-family:var(--deck-font)!important;}
