.player-session[open]{display:block;position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;box-sizing:border-box;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:hidden;color:#fff0cf;font-family:system-ui;isolation:isolate}
.player-session::backdrop{background:rgba(3,12,8,.22);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.player-session-head{position:absolute;left:24px;right:24px;top:18px;z-index:50;display:flex;justify-content:space-between;align-items:center;pointer-events:none}
.player-session-head h2{margin:0;font:600 clamp(16px,2vw,24px)/1.3 system-ui;text-shadow:0 2px 8px #000}
.player-session-head .holster-close{position:static;width:44px;height:44px;border:1px solid #c8ac66;background:#10271fdd;color:#fff0cf;border-radius:50%;font:28px system-ui;pointer-events:auto;cursor:pointer}
.player-session #holster-held{max-width:none;margin:0;grid-column:auto;grid-row:auto}.player-held{position:absolute;right:1vw;bottom:-8vh;width:min(48vw,62vh);aspect-ratio:2/3;isolation:isolate;transform-origin:65% 90%;transition:transform .18s ease;pointer-events:none}
.player-held.pressing{transform:rotate(-.8deg) translateY(2px)}
.player-hand-case{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:20;pointer-events:none}
.player-reserve{position:absolute;inset:0;z-index:1;pointer-events:none}
.player-slot{position:absolute;left:26.4%;top:18.2%;width:43%;aspect-ratio:1036/1518;border-radius:5%;transform-origin:0 0;transform:rotate(12deg) translateY(calc(var(--slot) * -4.4%));background:linear-gradient(90deg,#0b1215,#4b4b40 3%,#131b1c 5%,#080e10 98%);box-shadow:0 -1px 0 #bdba9e88;overflow:hidden}
.player-reserve-card{position:absolute;inset:0;will-change:transform}
.player-reserve-card img{position:absolute;width:146.5251%;height:68.2477%;max-width:none;left:50%;top:50%;object-fit:contain;transform:translate(-50%,-50%) rotate(90deg);border-radius:4%;display:block}
.player-slot[data-empty=true] .player-reserve-card{visibility:hidden}
.player-lever{position:absolute;left:70%;top:35%;width:12%;height:17%;z-index:25;border:0;border-radius:20%;background:transparent;cursor:pointer;pointer-events:auto;touch-action:manipulation}
.player-lever:focus-visible{outline:2px solid #f4d578;outline-offset:4px}
#holster-card-target{position:absolute;left:7vw;top:22vh;width:min(48vw,650px);aspect-ratio:1518/1036;pointer-events:none}
.player-flight-stage{position:absolute;inset:0;pointer-events:none;z-index:30;perspective:1400px}
.player-flight{position:absolute;left:0;top:0;transform-origin:center;perspective:1400px;will-change:transform;filter:drop-shadow(0 12px 18px #0008)}
.player-card-turn{width:100%;height:100%;position:relative;transform-style:preserve-3d}
.player-card-face{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:none;object-fit:contain;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.player-card-front{transform:rotateY(180deg)}
.player-result{position:absolute;left:7vw;top:calc(22vh + min(48vw,650px) * .682477 + 16px);width:min(48vw,650px);z-index:40;text-align:center;text-shadow:0 2px 6px #000;opacity:0;transition:opacity .2s}
.player-result.visible{opacity:1}.player-result strong,.player-result span{display:block}.player-result strong{font-size:clamp(17px,2vw,24px)}.player-result span{font-size:14px;margin-top:6px}
.player-session-footer{position:absolute;bottom:9vh;left:7vw;width:min(48vw,650px);z-index:45;text-align:center;text-shadow:0 2px 7px #000}
.player-session-footer p{margin:4px 0;font-size:16px}.player-session-footer #holster-hint{font-size:13px;min-height:18px;color:#eadabd}
.player-session-footer .holster-action{margin-top:10px;padding:12px 22px;min-height:46px;background:#143c2f;border:1px solid #c1a85c;border-radius:9px;color:#ffe5a1;font:600 15px system-ui;cursor:pointer}
.player-session-footer .holster-action:disabled{opacity:.65;cursor:wait}.player-prototype{position:absolute;bottom:10px;left:16px;right:16px;text-align:center;font:11px/1.4 system-ui;color:#f2e7ce;text-shadow:0 2px 6px #000;z-index:45;margin:0}
.bank-mini.leather-mini{background:repeating-linear-gradient(20deg,#ffffff07 0 1px,transparent 1px 3px),linear-gradient(110deg,#4c281b,#8d5132 48%,#58301f);border:1px solid #bd9970;border-radius:4px;box-shadow:3px 1px 0 #151c1e,inset 0 0 0 3px #5e3424,inset 0 0 0 4px #ac8460;aspect-ratio:.7}
.bank-mini.leather-mini:after{right:-6px;bottom:21%;width:5px;height:28%;background:#161b1c;border:1px solid #727470}
.leather-mini-cards{position:absolute;left:11%;top:-17%;width:80%;height:16%;background:#384c53;border-top:2px solid #d5b15b;box-shadow:1px -4px 0 #66767a,2px -8px 0 #a18a58;border-radius:2px 3px 0 0}
.bank-delivery .bank-mini.leather-mini{aspect-ratio:.7}
@media(max-width:650px){.player-session-head{left:14px;right:14px;top:12px}.player-held{width:min(77vw,45vh);right:-1vw;bottom:0}.player-session-footer{left:3vw;width:44vw;bottom:12vh}.player-session-footer p{font-size:13px}.player-session-footer #holster-hint{font-size:11px}.player-session-footer .holster-action{padding:11px 10px;font-size:13px;width:100%}#holster-card-target{top:12vh;left:6vw;width:88vw}.player-result{left:6vw;top:calc(12vh + 88vw * .682477 + 10px);width:88vw}.player-result strong{font-size:17px}.player-result span{font-size:12px}.player-prototype{font-size:10px;bottom:8px}}
@media(max-height:540px) and (min-width:651px){#holster-card-target{top:16vh;width:40vw}.player-result{top:calc(16vh + 40vw * .682477 + 6px);width:40vw}.player-session-footer{bottom:5vh;width:40vw}.player-session-footer p{font-size:12px}.player-session-footer #holster-hint{display:none}.player-session-footer .holster-action{margin-top:3px;padding:8px 14px;min-height:36px}}
@media(prefers-reduced-motion:reduce){.player-held,.player-result{transition:none}}

/* The bank is the scene itself, with a cover crop and an aligned counter.
   Approved artwork is never stretched. The sill tracks the image crop. */
html:has(.holster-page),body.holster-page{width:100%;height:100dvh;overflow:hidden!important}
body.holster-page main.bank-main{position:fixed;inset:0;width:100vw!important;max-width:none!important;height:100dvh;min-height:0!important}
.bank-scene{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto}
.bank-header{position:absolute;top:0;left:0;right:0;z-index:10;background:linear-gradient(#071710b3,transparent);padding:12px 18px 28px}
.bank-header h1{color:#f6e0aa!important;text-shadow:0 2px 5px #000}.bank-local{display:none}
.bank-disclaimer{position:absolute;bottom:3px;left:8px;right:8px;padding:0;font-size:10px;z-index:5;text-shadow:0 2px 4px #000;pointer-events:none}
.bank-status{bottom:28px;background:transparent;border:0;box-shadow:none}
.bank-banker{--banker-size:min(44vw,64vh);width:var(--banker-size);left:calc(50% - var(--banker-size)/2);top:calc(var(--bank-sill,61.5vh) - var(--banker-size)*.84)}
.bank-offer{width:13%;height:17%;padding:8px 4px;gap:3px}.bank-offer-0,.bank-offer-1,.bank-offer-2{left:15%}.bank-offer-3,.bank-offer-4,.bank-offer-5{right:15%}
.bank-offer-0,.bank-offer-3{top:10%}.bank-offer-1,.bank-offer-4{top:28%}.bank-offer-2,.bank-offer-5{top:46%}.bank-mini{width:auto;height:50%}
.bank-nature-depth{clip-path:inset(0 10.9% calc(100% - var(--bank-sill,61.5%)) 10.9%)}
.player-session #holster-held{width:min(38vw,50vh);right:0;bottom:-12vh;max-width:none;margin:0}
.player-hand-case{z-index:0}.player-hand-case-front{z-index:20;clip-path:polygon(0 21.5%,100% 36%,100% 100%,0 100%)}
.player-reserve{z-index:10;clip-path:none;overflow:visible}
.player-slot{top:21.5%;background:transparent;box-shadow:none;overflow:visible;transform:rotate(12deg) translateY(calc(var(--slot) * -3.3%))}
.player-reserve-card{background:#28231d;border-radius:4%}.player-card-face{background:#28231d;border-radius:3%;opacity:1!important}
.player-slot[data-empty=true]{visibility:hidden}
.player-session-footer{display:block}.player-session-footer p,.player-result,.player-session-head h2{background:none!important;border:0!important;box-shadow:none!important;border-radius:0!important;padding:0!important}
@media(max-width:650px){
 .bank-header{padding:9px 10px 24px}.bank-header h1{font-size:16px!important}.bank-header .holster-home{padding:8px 10px}
 .bank-banker{--banker-size:min(88vw,52vh)}
 .bank-offer{width:23%;height:16%;padding:5px 2px;gap:2px}.bank-offer strong{font-size:17px}.bank-offer>span:last-child{font-size:11px}
 .bank-offer-0,.bank-offer-1,.bank-offer-2{left:2%}.bank-offer-3,.bank-offer-4,.bank-offer-5{right:2%}
 .bank-offer-0,.bank-offer-3{top:12%}.bank-offer-1,.bank-offer-4{top:29%}.bank-offer-2,.bank-offer-5{top:46%}
 .player-session #holster-held{width:min(88vw,51vh);right:-4vw;bottom:-2vh}
 .player-session-footer{bottom:10vh;width:43vw;left:3vw}
 #holster-card-target{top:10vh}.player-result{top:calc(10vh + 88vw * .682477 + 10px)}
}
/* This full-screen layer must never become a scroll container when the
   player's wrist extends beyond the frame or a control receives focus. */
.player-session[open]{overflow:clip;--reveal-width:min(38vw,440px);--reveal-top:28vh;--reveal-left:calc(42vw - var(--reveal-width)/2)}
#holster-card-target{left:var(--reveal-left);top:var(--reveal-top);width:var(--reveal-width)}
.player-result{left:var(--reveal-left);top:calc(var(--reveal-top) + var(--reveal-width)*.682477 + 12px);width:var(--reveal-width)}
.player-session-footer{left:var(--reveal-left);width:var(--reveal-width)}
@media(max-width:650px){.player-session[open]{--reveal-width:min(74vw,340px);--reveal-top:24vh;--reveal-left:calc(50vw - var(--reveal-width)/2)}.player-session-footer{left:3vw;width:43vw}}

/* Purchase displays use the detailed leather asset and the actual approved
   front illustrations. No flat CSS substitute for the product. */
.bank-product{position:relative;display:block;height:56%;width:auto;aspect-ratio:2/3;isolation:isolate;flex-shrink:0;pointer-events:none;margin-top:8px}
.bank-product-case{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:none;object-fit:contain;z-index:0}
.bank-product-reserve{position:absolute;inset:0;z-index:1;overflow:visible}
.bank-product-front{z-index:2;clip-path:polygon(0 10%,100% 14%,100% 100%,0 100%)}
.bank-product-card{position:absolute;left:21%;top:calc(-3% - var(--order)*.6%);width:56%;aspect-ratio:1036/1518;transform:rotate(4deg);transform-origin:top left;background:#252019;border-radius:4%}
.bank-product-card img{position:absolute;left:50%;top:50%;width:146.5251%;height:68.2477%;max-width:none;object-fit:contain;transform:translate(-50%,-50%) rotate(90deg);border-radius:4%}
.bank-delivery .bank-product{width:100%;height:auto;aspect-ratio:2/3}
.bank-offer{overflow:hidden;box-sizing:border-box;min-width:0;min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto auto;justify-items:center;align-items:center;gap:3px}.bank-offer .bank-product{height:calc(100% - 8px);margin-top:8px;max-width:100%}.bank-offer strong,.bank-offer>span:last-child{max-width:100%;margin:0;line-height:1.15;flex-shrink:0;overflow-wrap:normal;word-break:normal;text-align:center}
@media(max-width:650px){.player-session #holster-held{width:min(64vw,43vh);right:-7vw;bottom:-2vh}}

.holster-close{display:grid!important;place-items:center!important;padding:0!important;line-height:0!important}.holster-close svg{display:block;width:20px;height:20px;pointer-events:none}
.bank-offer{height:19%;padding:7px 5px;grid-template-rows:minmax(0,1fr) 21px;gap:3px}
.bank-offer-0,.bank-offer-3{top:8%}.bank-offer-1,.bank-offer-4{top:28%}.bank-offer-2,.bank-offer-5{top:48%}
.bank-buy{display:grid;grid-template-rows:minmax(0,1fr) auto auto;gap:3px;justify-items:center;align-items:center;width:100%;height:100%;min-height:0;padding:0;margin:0;background:none;border:0;border-radius:0;box-shadow:none;color:inherit;font-family:inherit;cursor:pointer}
.bank-buy strong{font-size:clamp(16px,1.8vw,25px);line-height:1.02}.bank-buy strong span{display:block;white-space:nowrap}.bank-buy strong small{display:block;font-size:9px;line-height:1.1;letter-spacing:.05em;margin-top:2px}.bank-buy>span:last-child{font-size:12px;line-height:1.1}
.bank-odds{align-self:stretch;max-width:100%;padding:0 8px;margin:0;min-height:20px;border:0;background:transparent;box-shadow:none;color:#ffe1a2;font:600 11px system-ui;text-decoration:underline;cursor:pointer}.bank-odds:hover{color:white}.bank-buy:disabled,.bank-odds:disabled{cursor:wait;opacity:.7}
.bank-test-balance{position:absolute;left:8px;right:8px;bottom:25px;z-index:5;margin:0;color:#ffe2a5;text-align:center;font:600 13px/1.2 system-ui;text-shadow:0 2px 5px #000;pointer-events:none}.bank-status{bottom:53px}
.player-draw-controls{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-width:100%;margin-top:8px}.player-draw-controls #holster-next{grid-column:1/-1;width:100%;margin:0}.player-draw-controls .draw-aux{min-height:34px;padding:4px 8px;color:#ffe3a0;background:#14372d;border:1px solid #baa368;border-radius:8px;font:600 12px system-ui;cursor:pointer}.draw-aux[aria-pressed=true]{background:#3b6750}.draw-aux:disabled{opacity:.45;cursor:default}
.player-result small{display:block;font-size:12px;margin-top:4px}.player-result.jackpot{color:#ffe37b}
.material-card{position:absolute;inset:0;background:#a88960;border-radius:4%;box-shadow:inset 0 0 0 1px #e1caa2;display:grid;place-items:center;color:#34291f;font:700 clamp(15px,2vw,24px) system-ui}.material-plastic{background:#b9d4dc;color:#173d49;box-shadow:inset 0 0 0 2px #e7f4f5}.material-card span{font-size:inherit;text-align:center;padding:10px}
.holster-odds{position:fixed;inset:0;margin:auto;box-sizing:border-box;width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:24px;border:1px solid #ae955c;border-radius:14px;background:#0e2c22;color:#f5e5c2;overflow:auto;font:14px/1.4 system-ui}.holster-odds::backdrop{background:#020b08aa;backdrop-filter:blur(3px)}.holster-odds>.holster-close{position:absolute;top:10px;right:10px;width:34px;height:34px}.holster-odds h2{font-size:19px;padding-right:24px;margin:0 0 12px}.holster-odds p{margin:10px 0;font-size:12px}.holster-odds table{width:100%;border-collapse:collapse;font-size:13px}.holster-odds th,.holster-odds td{padding:6px 8px;border-bottom:1px solid #73836d55;text-align:left}.holster-odds td:last-child,.holster-odds th:last-child{text-align:right}.holster-odds #holster-odds-content>button{padding:9px 14px;background:#234d3c;border:1px solid #baa368;color:#ffe3a0;border-radius:8px;cursor:pointer}
@media(max-width:650px){.bank-offer{height:19%;padding:5px 3px;grid-template-rows:minmax(0,1fr) 19px;gap:2px}.bank-offer-0,.bank-offer-3{top:9%}.bank-offer-1,.bank-offer-4{top:29%}.bank-offer-2,.bank-offer-5{top:49%}.bank-buy{gap:2px}.bank-buy strong{font-size:17px}.bank-buy>span:last-child{font-size:11px}.bank-odds{font-size:10px;min-height:18px}.player-draw-controls{margin-top:6px;gap:5px}.player-draw-controls .draw-aux{min-height:30px;padding:3px;font-size:11px}.bank-test-balance{font-size:11px}.holster-odds{padding:19px 13px}.holster-odds h2{font-size:17px}}

.legendary-holster .player-session-head h2{color:#ffdb75;text-shadow:0 2px 6px #000,0 0 18px #c99b3d66}

/* Held illustration v368 is 1024x1536. Front mouth runs approximately from
   (265,390) to (640,480). Keep the card plane inside that cavity.
   This open half-plane masks only inserted pixels below the front lip;
   it has no rectangular top/side boundary to cut the rising card. */
.player-slot{left:26%;width:36.5%}
.player-reserve{clip-path:polygon(-150% -150%,250% -150%,250% 59.3%,-150% -.7%);overflow:visible}
