/* Shared page.css remains the unchanged Dice Bloom shell. */
.duel-stage{--table-art:url('assets/table-mobile.webp?v=20261015-cardduel-mobile-3');--deck-art:url('assets/deck-refined-mobile.webp?v=20261015-cardduel-mobile-3');--back-art:url('assets/back-premium-mobile.webp?v=20261015-cardduel-mobile-3');width:100%;max-width:420px;margin:0 auto;padding:3px 4px 12px;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:manipulation}
.duel-table{position:relative;padding:13px 18px 15px;border:1px solid #ae976047;border-radius:20px;background:#07342f var(--table-art) center/100% 100%;box-shadow:0 12px 24px #0005,inset 0 0 0 4px #021b1a70,inset 0 1px 0 #cfbf8726}
.table-topline{display:flex;justify-content:space-between;align-items:center;gap:12px;color:#c0ccbe;font-size:10px;letter-spacing:.03em;min-height:16px}.deck-mark{color:#d1b775;font-size:15px;letter-spacing:4px;white-space:nowrap}.card-pair{display:grid;grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr);align-items:center;gap:8px;padding:9px 0 3px}.card-seat{display:flex;align-items:center;flex-direction:column;min-width:0;gap:8px}.seat-label{color:#e5dfc9;font-size:12px;font-weight:700}.seat-detail{font-size:11px;color:#d1dbcf;min-height:15px;text-align:center}.duel-divider{color:#b89c5f;font-size:17px;text-shadow:0 1px 6px #000}
.playing-card{position:relative;width:clamp(88px,26cqw,118px);aspect-ratio:7/10;perspective:650px;border-radius:7px;box-shadow:0 7px 10px #0007}.card-turner{position:absolute;inset:0;transform-style:preserve-3d}.card-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:7px;overflow:hidden;background-color:#fffdf7;box-shadow:inset 0 0 0 1px #0002}.card-front{background-image:var(--deck-art);background-size:1300% 400%}.card-back{transform:rotateY(180deg);background:#09162c var(--back-art) center/100% 100%}
.table-progress{height:3px;margin:9px 10px 0;border-radius:3px;background:#0005;overflow:hidden}.table-progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,#8e743b,#e2cb86);border-radius:inherit}.playing-card.is-winner{box-shadow:0 0 0 2px #d4b66e80,0 0 12px #dbbd6740,0 7px 10px #0007}
.duel-message{display:flex;align-items:center;justify-content:center;min-height:42px;margin:7px 0;padding:4px 7px;text-align:center;font-size:13px;line-height:1.35;color:#e0e6ea}.duel-message.is-win{color:#c7e8b9}.duel-message.is-loss{color:#f2c4b6}.bet-panel{border:1px solid #bbaa6430;border-radius:13px;padding:7px 10px 9px;background:linear-gradient(125deg,#1b2933,#111c27)}.bet-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px;color:#dfd9c7}.bet-input-wrap{display:flex;gap:7px;align-items:center}.bet-input-wrap img{object-fit:contain}.bet-input-wrap input{width:88px;min-height:44px;padding:7px 9px;font-size:16px;font-weight:700;text-align:right;color:#f1d794;background:#09131e;border:1px solid #bdaa5e60;border-radius:8px;user-select:text;-webkit-user-select:text}.bet-range{display:block;width:100%;height:44px;margin:0;accent-color:#d5b967;touch-action:pan-y}.bet-presets{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.bet-presets button{min-height:44px;padding:5px 4px;font-size:13px}.bet-presets button.is-active{border-color:#dfc47e;color:#f3dc9b;background:#354034}.duel-action{width:100%;min-height:48px;margin-top:9px;font-size:15px}.duel-stage button:focus-visible,.duel-stage input:focus-visible{outline:2px solid #ffe4a5;outline-offset:3px}.duel-stage button:disabled,.duel-stage input:disabled{opacity:.45}.final-score{display:block;font-size:36px;color:#e8ce83;text-align:center;margin:16px 0}.demo-finger{position:fixed;z-index:1000;font-size:34px;pointer-events:none}
@container gf-page (max-width:350px){.duel-table{padding-inline:12px}.card-pair{gap:4px}.seat-detail{font-size:10px}.table-topline{font-size:9px}.deck-mark{letter-spacing:2px}}
@container gf-page (min-width:600px){.duel-stage{max-width:600px;padding:8px}.duel-table{padding:18px 28px 20px}.playing-card{width:168px}.seat-label{font-size:16px}.seat-detail{font-size:14px;min-height:18px}.card-pair{padding:15px 0 5px;gap:20px}.table-topline{font-size:13px}.duel-message{font-size:16px;min-height:48px}.bet-heading,.bet-presets button{font-size:15px}.duel-action{min-height:52px}}
@media(max-height:740px){.duel-table{padding-block:9px}.card-seat{gap:5px}.playing-card{width:90px}.duel-message{min-height:36px;margin:4px 0}.duel-action{margin-top:7px}.duel-stage{padding-bottom:6px}}
/* Keep the rival concealed even before the offline bundle has initialized. */
#computer-turner{transform:rotateY(180deg)}
/* Card flights stay inside the felt, clear of menu and stake controls. */
.duel-table{overflow:hidden;isolation:isolate}
#player-turner{transform:rotateY(180deg)}
.card-seat{position:relative}
.playing-card{transform-origin:50% 65%}

/* Only the wider tablet play surface needs the original local Poker copies. */
@container gf-page (min-width:600px){.duel-stage{--table-art:url('assets/table.webp?v=20261015-cardduel-mobile-3');--deck-art:url('assets/deck-refined.webp?v=20261015-cardduel-mobile-3');--back-art:url('assets/back-premium.webp?v=20261015-cardduel-mobile-3')}}
