:root{color-scheme:dark;--bg:#10271f;--cream:#fff4d8;--ink:#123b2b;--muted:#66776b;--gold:#e5bc59;--gold-light:#fff1b7;--line:linear-gradient(125deg,#80511b,#f9d981 15%,#fff7d0 26%,#bd8125 39%,#f6d47b 55%,#fff7c7 68%,#aa6a1c 83%,#e3b849);--card-w:clamp(59px,11vw,94px);--card-h:calc(var(--card-w)*1.43)}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 10%,#254c39,#0d211a 80%);color:var(--cream);font-family:Arial,Helvetica,sans-serif}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{font:inherit;cursor:pointer}button:disabled{cursor:default}button:focus-visible,a:focus-visible{outline:3px solid #fff1b7;outline-offset:5px}a{color:inherit;text-decoration:none}[hidden]{display:none!important}.shell{max-width:960px;margin:auto;padding:0 24px 24px}.header{min-height:80px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #e1c46c45}.table-heading{font:24px Georgia,serif;color:var(--gold-light)}.header-actions{display:flex;align-items:center;gap:8px}.primary,.quiet,.table-link,.pile-label,.table-outcome strong,.turn-status strong{border:2px solid transparent;background:linear-gradient(#164d38,#092e23) padding-box,var(--line) border-box;color:var(--gold-light);box-shadow:inset 0 1px 0 #fff2bc5e,0 2px 4px #0a211a55;text-shadow:0 1px 2px #0008;font-family:Georgia,'Times New Roman',serif;border-radius:999px}.primary,.quiet{padding:11px 20px;font-size:17px}.primary:hover,.quiet:hover,.table-link:hover{filter:brightness(1.15)}.header-actions .quiet{padding:9px 14px;font-size:14px}.intro{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:15px 4px;color:#e0d4ae;font:italic 13px Georgia,serif}.scoreboard{display:flex;gap:12px;font:11px Arial,sans-serif;white-space:nowrap}.scoreboard b{font:18px Georgia,serif;color:var(--gold-light);margin-left:4px}.scoreboard i{color:var(--gold)}
.game-table{position:relative;isolation:isolate;overflow:hidden;min-height:800px;border:9px solid transparent;border-radius:64px;background:radial-gradient(ellipse at 50% 36%,#b3d69b,#8bbb82 61%,#619866 100%) padding-box,var(--line) border-box;box-shadow:0 0 0 2px #533913,0 0 0 4px #e6c36c,inset 0 0 0 2px #3d653b,inset 0 0 0 5px #f7d783,inset 0 0 0 7px #507e4e,0 30px 70px #0008;padding:24px 80px 100px;color:var(--ink)}.game-table::before{content:'';position:absolute;inset:8px;z-index:-1;opacity:.14;pointer-events:none;background:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.65'/%3E%3C/svg%3E")}.game-table>*{position:relative}.game-table>.table-decoration,.game-table>.table-extras{position:absolute;inset:0;pointer-events:none}.table-decoration{z-index:-1}.deco-fan{position:absolute;width:80px;height:45px;background:repeating-conic-gradient(from 270deg at 50% 100%,#f8e3a0 0deg 3deg,#123e31 3deg 22deg);clip-path:polygon(0 15%,100% 15%,50% 100%);filter:drop-shadow(0 1px 1px #fff)}.fan-north{left:calc(50% - 40px);top:0;rotate:180deg}.fan-south{left:calc(50% - 40px);bottom:0}.fan-west{top:45%;left:-25px;rotate:90deg}.fan-east{top:45%;right:-25px;rotate:-90deg}.marble-corner{position:absolute;width:62px;height:50px;background:repeating-linear-gradient(130deg,#fff8e3,#f4eddf 17px,#c5b6a53d 18px,#fff7e5 20px);border:2px solid #f2cc69;transform:rotate(-35deg)}.corner-nw{top:25px;left:-18px}.corner-ne{top:25px;right:-18px;transform:rotate(35deg)}.corner-sw{bottom:25px;left:-18px;transform:rotate(35deg)}.corner-se{bottom:25px;right:-18px}.rim-light{position:absolute;left:2px;right:2px;height:48%;border:3px solid #fff2ad;border-radius:51px;opacity:0;filter:drop-shadow(0 0 5px #ffe175);pointer-events:none}.rim-near{bottom:2px;border-top:0;mask-image:linear-gradient(transparent,#000 70%)}.rim-far{top:2px;border-bottom:0;mask-image:linear-gradient(#000 30%,transparent)}[data-turn=you] .rim-near,[data-turn=cpu] .rim-far{animation:rim-shine 3.6s ease-in-out infinite}.table-ended .rim-light{animation-duration:2s}@keyframes rim-shine{0%,100%{opacity:.4;filter:drop-shadow(0 0 3px #ffe175)}50%{opacity:1;filter:drop-shadow(0 0 11px #fff1a3)}}
.table-top{display:flex;justify-content:space-between;align-items:center;z-index:3}.round-badge{font:10px Georgia,serif;letter-spacing:2px;color:#234e35}.table-link{padding:6px 11px;font-size:12px}.table-link span{padding-left:4px}.opponent{display:flex;flex-direction:column;align-items:center;margin-top:30px;z-index:2}.player-label{display:flex;align-items:center;justify-content:center;gap:7px;text-align:center}.player-label strong{font:17px Georgia,serif;letter-spacing:.5px}.player-label div>span{font-size:10px;display:block;margin-top:5px;color:#2c5139}.turn-dot{width:6px;height:6px;border-radius:100%;background:transparent}.turn-dot.active{background:#fff1a7;box-shadow:0 0 10px #eec966}.opponent-hand{height:100px;display:flex;justify-content:center;align-items:center;max-width:94%;position:relative;margin:23px 0 10px;gap:0}.opponent-mini{width:64px;height:91px;border-radius:6px;background:url('table/card-back-v1.svg') center/100% 100%;margin-left:-18px;transform:rotate(var(--rot));box-shadow:0 3px 5px #16301a66;flex-shrink:0}.opponent-mini:first-child{margin-left:0}.opponent-extra{position:absolute;right:-24px;color:var(--ink);font:14px Georgia,serif}
.table-center{display:grid;grid-template-columns:var(--card-w) var(--card-w) minmax(70px,100px);column-gap:36px;justify-content:center;align-items:start;margin:42px 0 0;min-height:205px;z-index:3}.deck-zone,.discard-zone{text-align:center}.card{width:var(--card-w);height:var(--card-h);border:2px solid #e3c36b;border-radius:9px;position:relative;background:linear-gradient(135deg,#fff9e9,#f4e9ce);color:#20211d;box-shadow:inset 0 0 0 1px #fffcdd,0 4px 9px #20452655;padding:7px;text-align:left;flex-shrink:0;font-family:Georgia,serif;overflow:hidden}.card.red{color:#b52925}.card-corner{font:bold 22px/.95 Georgia,serif;display:flex;flex-direction:column;align-items:center;position:absolute;top:7px;left:7px;z-index:1}.card-corner small{font-size:15px}.card-corner.bottom{top:auto;left:auto;bottom:7px;right:7px;transform:rotate(180deg)}.card-suit{position:absolute;inset:0;display:grid;place-items:center;font:normal 47px Georgia,serif}.card-back{background:url('table/card-back-v1.svg') center/100% 100%;padding:0;border:0}.back-frame{display:none}.card.joker-card{padding:0}.joker-face{position:absolute;inset:0;background:url('table/joker-v1.png') center/112% 113%;border-radius:7px}.card-back.empty{background:none;border:1px solid #e9d48c;box-shadow:inset 0 0 8px #37673d25;opacity:.6}.card-back.deck:not(.empty){box-shadow:2px 3px 0 #e9d49c,4px 6px 0 #bba367,5px 8px 0 #9a7f43,5px 11px 9px #123a2340}.deck:not(:disabled){cursor:grab;touch-action:none}.deck:disabled{cursor:default}.deck:not(:disabled):hover{translate:0 -3px}.deck.can-draw{animation:card-glow 2s ease-in-out infinite}.pile-label{display:inline-block;font-size:15px;line-height:1.2;padding:4px 12px;white-space:nowrap;margin:15px 0 0;font-weight:normal}.deck-count{display:block;font:10px Georgia,serif;margin-top:8px;color:#274e34}.deck-hint{display:block;font-size:9px;margin-top:5px;white-space:nowrap}.legal-guide{align-self:center;text-align:center;padding-bottom:35px}.legal-guide .pile-label{font-size:13px;padding:5px 10px;margin:0}.legal-guide>div{display:flex;gap:7px;justify-content:center;margin:12px 0 7px}.legal-guide b{border:2px solid transparent;background:linear-gradient(#154b35,#0d3327) padding-box,var(--line) border-box;color:var(--gold-light);border-radius:6px;width:34px;height:40px;display:grid;place-items:center;font:24px Georgia,serif;box-shadow:0 2px 3px #1233}.legal-guide>span{font-size:10px}.called-value-label{display:block;color:var(--ink);font-size:11px!important;margin-bottom:10px;font-weight:bold}
.inspection-space{height:85px;pointer-events:none}.turn-status{text-align:center;min-height:55px;margin:10px 0 20px;display:flex;flex-direction:column;align-items:center;gap:9px;position:relative;z-index:2}.turn-status strong{font-size:18px;padding:5px 25px;min-width:130px}.turn-status>span{font-size:11px;line-height:1.5;max-width:85%;color:#244a32}.your-area{position:relative;z-index:3}.hand-heading{display:flex;align-items:center;justify-content:center;gap:15px;margin:0 0 12px}.hand-heading .player-label strong{font-size:15px}.hand-points{font-size:10px!important}.hand{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px 3px;max-height:300px;overflow:auto;scrollbar-width:thin;scrollbar-color:#cbb26b #73a475;padding:13px 8px 13px;min-height:var(--card-h)}.hand>.card{transform:rotate(var(--tilt,0deg));margin-left:-7px;transition:filter .15s,translate .2s}.hand>.card:first-child{margin-left:0}.hand>.card:disabled{filter:saturate(.7);opacity:.72}.hand>.card.playable{opacity:1;filter:none;animation:card-glow 2.2s ease-in-out infinite}.hand>.card.playable:hover{translate:0 -6px}.hand.round-revealed>.card:disabled{opacity:1;filter:none}.table-actions{min-height:52px;display:flex;align-items:center;justify-content:center;margin-top:10px}.keep-card-button{min-width:160px}.in-transit{visibility:hidden}@keyframes card-glow{0%,100%{box-shadow:0 0 0 1px #f8d370,0 0 10px #fff1a459,0 4px 7px #1234}50%{box-shadow:0 0 0 2px #fff3b6,0 0 22px #ffe16aaa,0 4px 7px #1234}}
.joker-panel{background:linear-gradient(#164c36,#092e24) padding-box,var(--line) border-box;border:3px solid transparent;border-radius:24px;padding:14px 18px;margin-top:12px;color:var(--gold-light);box-shadow:inset 0 1px 1px #fff4b77f,0 3px 9px #193b2455;text-align:center}.joker-panel h3{font:27px Georgia,serif;margin:0 0 4px}.joker-panel p{font:italic 13px Georgia,serif;margin:0 0 12px}.rank-choices{display:flex;flex-wrap:wrap;gap:7px;justify-content:center}.rank-choice{border:2px solid #dba54d;background:linear-gradient(135deg,#fffbed,#f1dfb0);color:var(--ink);border-radius:8px;font:21px Georgia,serif;min-height:42px;flex:0 1 calc((100% - 42px)/7);min-width:35px;box-shadow:inset 0 0 0 1px #fff9cc,0 2px 3px #0006;padding:4px}.rank-choice:hover{background:#ffe3a0;box-shadow:0 0 10px #fff3a880}.table-outcome{text-align:center;display:flex;flex-direction:column;align-items:center;gap:7px;margin:12px 0}.table-outcome strong{font:bold 27px Georgia,serif;padding:5px 25px;letter-spacing:1px}.table-outcome span{font:22px Georgia,serif;color:#284833;text-shadow:0 1px #e8edc7}.end-actions{display:flex;justify-content:center;gap:10px;margin:20px 0 15px}.table-ended .inspection-space,.table-ended .turn-status,.table-ended .hand-heading,.table-ended .table-actions{display:none}.table-ended .table-center{margin-top:25px;margin-bottom:20px;min-height:190px;grid-template-columns:var(--card-w) var(--card-w)}.table-ended .opponent-hand{height:auto;min-height:105px;flex-wrap:wrap;gap:8px;max-height:300px;overflow:auto}.opponent-hand.revealed>.card{width:calc(var(--card-w)*.8);height:calc(var(--card-h)*.8);margin:0}.opponent-hand.revealed .card-corner{font-size:18px}.opponent-hand.revealed .card-suit{font-size:34px}.table-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 3px;font-size:11px;line-height:1.5;color:#d3cfac}.table-footer p{margin:0}.text-link{background:none;border:0;border-bottom:1px solid #e4cd8c;padding:4px 0;color:var(--gold-light);font:13px Georgia,serif;white-space:nowrap}
.game-table>.opponent-resting-arms{position:absolute;top:-40px;left:0;right:0;height:185px;pointer-events:none;z-index:1;overflow:hidden}.rest-arm{position:absolute;transition:opacity .12s;filter:drop-shadow(0 4px 5px #14271f55);width:185px;height:277px;pointer-events:none}.rest-arm img{width:100%;height:100%;object-fit:contain;pointer-events:none}.cpu-arm{top:-110px}.cpu-arm-left{left:0;transform:rotate(180deg)}.cpu-arm-right{right:0;transform:rotate(180deg) scaleX(-1)}.game-table>.resting-arms{position:absolute;bottom:-110px;left:0;right:0;height:285px;pointer-events:none;z-index:1}.rest-arm-left{left:0;bottom:0;transform:rotate(10deg)}.rest-arm-right{right:0;bottom:0;transform:rotate(-10deg) scaleX(-1)}.rest-arm.reaching{opacity:0}.table-extras{z-index:1}.table-pug{position:absolute;right:-8px;top:145px;width:130px;transform:rotate(-10deg);filter:drop-shadow(0 8px 7px #20321c66)}.table-drink{position:absolute;width:105px;filter:drop-shadow(0 7px 7px #29392555)}.drink-far{top:120px;left:5px;width:75px}.drink-near{top:375px;left:7px}
.card-flight{position:fixed;z-index:20;pointer-events:none;transform-origin:top left;filter:drop-shadow(0 7px 6px #18352266)}.carried-card{position:absolute;inset:0;opacity:0;z-index:1}.carried-card>.card{width:100%;height:100%;margin:0}.grip-hand{position:absolute;left:32%;top:48%;width:180%;height:auto;max-width:none;z-index:2;transform-origin:50% 50%;pointer-events:none}.left-grip .grip-hand{left:-108%;scale:-1 1}.opponent-grip .grip-hand{left:-12%;top:-218%;rotate:180deg}.opponent-grip.left-grip .grip-hand{left:-60%;scale:-1 1;rotate:180deg}.held-draw{pointer-events:none}.held-draw .carried-card,.held-draw .carried-card>.card{pointer-events:auto}.held-draw .card.playable{animation:card-glow 2s ease-in-out infinite;cursor:pointer}.moving-forearm{position:fixed;inset:0;width:100vw;height:100vh;overflow:visible;z-index:19;pointer-events:none;filter:drop-shadow(0 3px 4px #19382666)}.moving-forearm path{fill:none;stroke-linecap:round}.sleeve-outline{stroke:#0f1714;stroke-width:calc(var(--arm-width) + 3px)}.sleeve-body{stroke:#1c2420;stroke-width:var(--arm-width)}.sleeve-seam{stroke:#373a31;stroke-width:1;opacity:.35}.reveal-fan{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:5px}.reveal-fan .card{width:50px;height:72px}.reveal-fan .card-corner{font-size:13px;top:4px;left:4px}.reveal-fan .card-corner.bottom{left:auto;top:auto;right:4px;bottom:4px}.reveal-fan .card-corner small{font-size:9px}.reveal-fan .card-suit{font-size:25px}.carried-fan .grip-hand{width:100px;top:-40px;left:auto;right:0}.startup-notice{position:absolute;z-index:5;top:45%;left:15%;right:15%;padding:24px;background:#103a2f;color:var(--gold-light);border:2px solid #efca72;border-radius:14px;box-shadow:0 5px 30px #19322588;display:flex;flex-direction:column;gap:15px;align-items:center}
.modal{color:var(--ink);background:linear-gradient(135deg,#fff8e7,#f1e7cc);border:3px solid #deb95c;border-radius:22px;padding:30px;max-width:calc(100vw - 30px);max-height:85svh;width:620px;box-shadow:0 20px 80px #0008}.modal::backdrop{background:#06261ec2;backdrop-filter:blur(5px)}.modal h2{font:32px Georgia,serif;margin:5px 0 20px}.modal p{font-size:13px;line-height:1.7}.modal-head{display:flex;align-items:center;justify-content:space-between}.eyebrow{font-size:9px;letter-spacing:2px;color:#76612f}.close{border:0;background:none;font:30px Georgia,serif;color:var(--ink);padding:5px}.rules-list{padding-left:20px;font-size:13px;line-height:1.7}.rules-list li{margin:0 0 18px}.rules-list b{font-family:Georgia,serif;font-size:17px;display:block}.wide{width:100%;margin-top:15px}.dialog-actions{display:flex;justify-content:end;gap:10px;margin-top:22px}.dashboard-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:25px 0}.dashboard-summary>div{border:1px solid #c19b4b;padding:14px 4px;text-align:center;border-radius:10px;background:#fff7e4}.dashboard-summary strong{font:30px Georgia,serif;display:block}.dashboard-summary span{font-size:10px}.games-heading{font:21px Georgia,serif;margin-bottom:10px}.history-notice,.history-empty{font-size:11px!important;color:#5f705c}.games-list{display:flex;flex-direction:column;gap:10px}.history-game{display:grid;grid-template-columns:1fr auto;border:1px solid #b8964c;border-radius:12px;background:#fff8e6;text-align:left;padding:15px;gap:10px;color:var(--ink)}.history-opponent b{font:18px Georgia,serif}.history-opponent small{display:block;font-size:10px;margin-top:5px}.history-outcome{font:14px Georgia,serif;color:#68501e;align-self:center}.history-link{grid-column:1/-1;font-size:11px;text-decoration:underline}.result-scores{display:grid;grid-template-columns:1fr 1fr;gap:14px}.result-player{border:1px solid #c3a252;padding:15px 10px;border-radius:15px;text-align:center}.result-player h3{font-size:12px}.end-total{display:block;font:42px Georgia,serif}.end-points,.end-count{font-size:11px;display:block;margin:5px}.end-outcome{display:block;font:17px Georgia,serif;margin:20px 0 10px;color:#8e681b}.end-cards{display:flex;flex-wrap:wrap;gap:14px 8px;justify-content:center;border-top:1px solid #c6ae76;margin-top:15px;padding-top:15px}.end-card .card{width:57px;height:82px}.end-card .card-corner{font-size:15px;top:5px;left:4px}.end-card .card-corner.bottom{top:auto;left:auto;right:4px;bottom:5px}.end-card .card-corner small{font-size:10px}.end-card .card-suit{font-size:29px}.end-card small{display:block;font-size:10px;margin-top:7px}.points-key{font-size:10px!important;text-align:center}.details-meta{font-size:11px!important}
@media(min-width:1100px){.shell{max-width:1020px}.game-table{padding-left:100px;padding-right:100px}.rest-arm{width:205px;height:308px}.cpu-arm{top:-135px}.table-pug{width:145px;right:2px}.table-drink{width:115px}.drink-far{width:85px}}
@media(max-width:600px){:root{--card-w:clamp(53px,15vw,76px)}.shell{padding:0 12px 20px}.header{min-height:65px;gap:7px}.table-heading{font-size:17px;white-space:nowrap}.header-actions{gap:5px}.header-actions .quiet{font-size:11px;padding:7px 9px}.intro{font-size:10px;gap:8px;padding:13px 1px}.scoreboard{font-size:9px;gap:7px}.scoreboard b{font-size:14px;margin-left:2px}.game-table{border-width:7px;border-radius:40px;padding:18px 24px 85px;min-height:680px}.table-top{margin:0 2px}.round-badge{font-size:8px;letter-spacing:1px}.table-link{font-size:10px;padding:5px 8px}.opponent{margin-top:26px}.player-label strong{font-size:15px}.player-label div>span{font-size:9px}.opponent-hand{height:80px;margin-top:30px;max-width:90%}.opponent-mini{width:45px;height:64px;margin-left:-15px}.opponent-extra{right:-20px;font-size:10px}.table-center{margin-top:31px;column-gap:20px;grid-template-columns:var(--card-w) var(--card-w) 72px;min-height:155px}.legal-guide{padding-bottom:25px}.legal-guide .pile-label{font-size:10px;padding:4px 7px}.legal-guide b{width:28px;height:33px;font-size:21px}.legal-guide>div{gap:5px;margin:10px 0 6px}.legal-guide>span{font-size:9px}.card{border-radius:6px;padding:5px}.card-corner{font-size:18px;top:5px;left:5px}.card-corner small{font-size:12px}.card-corner.bottom{bottom:5px;right:5px}.card-suit{font-size:34px}.pile-label{font-size:12px;padding:3px 9px;margin-top:12px}.deck-count{font-size:9px;margin-top:7px}.deck-hint{font-size:8px;margin-top:4px}.inspection-space{height:76px}.turn-status{margin:5px 0 16px;min-height:50px;gap:7px}.turn-status strong{font-size:16px;padding:4px 18px;min-width:110px}.turn-status>span{font-size:10px;max-width:100%}.hand-heading{margin-bottom:7px}.hand-heading .player-label strong{font-size:14px}.hand-heading .player-label div>span{font-size:9px;line-height:1.5;max-width:250px}.hand{padding:10px 5px;max-height:225px;gap:12px 3px}.hand>.card{margin-left:-5px}.table-actions{min-height:42px;margin-top:7px}.primary,.quiet{font-size:15px;padding:9px 17px}.keep-card-button{min-width:132px}.joker-panel{padding:12px 10px;border-radius:19px;margin:10px -6px 0}.joker-panel h3{font-size:23px}.joker-panel p{font-size:11px;margin-bottom:9px}.rank-choices{gap:6px}.rank-choice{font-size:18px;min-height:39px;min-width:27px;flex-basis:calc((100% - 36px)/7);padding:3px 0}.table-outcome strong{font-size:23px;padding:4px 22px}.table-outcome span{font-size:19px}.table-ended .table-center{min-height:155px}.table-ended .opponent-hand{min-height:90px;max-height:190px}.end-actions{gap:8px;margin:15px 0 8px}.end-actions button{font-size:15px;padding:8px 18px}.game-table>.opponent-resting-arms{top:-27px;height:145px}.rest-arm{width:125px;height:188px}.cpu-arm{top:-72px}.cpu-arm-left{left:-9px}.cpu-arm-right{right:-9px}.game-table>.resting-arms{bottom:-78px;height:203px}.rest-arm-left{left:-17px}.rest-arm-right{right:-17px}.table-pug{width:75px;top:140px;right:-13px}.table-drink{width:58px;left:-8px}.drink-far{top:130px;width:45px;left:-4px}.drink-near{top:320px}.table-footer{font-size:10px;padding:15px 2px;gap:10px}.text-link{font-size:11px}.modal{padding:23px 18px}.modal h2{font-size:28px}.dashboard-summary{gap:5px}.dashboard-summary span{font-size:9px}.end-card .card{width:50px;height:72px}.deco-fan{width:60px;height:34px}.fan-north,.fan-south{left:calc(50% - 30px)}.fan-west{left:-19px}.fan-east{right:-19px}.marble-corner{width:40px;height:35px}.rim-light{border-radius:30px}.called-value-label{font-size:9px!important}}
@media(max-width:370px){.shell{padding:0 9px 15px}.table-heading{font-size:14px}.header-actions .quiet{padding:6px 7px;font-size:10px}.game-table{padding-left:18px;padding-right:18px}.table-center{column-gap:15px}.hand>.card{margin-left:-7px}.table-pug{width:63px}.table-drink{width:49px}.drink-far{width:39px}.rank-choice{font-size:17px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.inspecting .turn-status,.choosing-joker .turn-status{align-items:flex-start;width:64%;text-align:left}.inspecting .turn-status>span,.choosing-joker .turn-status>span{max-width:95%}.inspecting .hand-heading,.choosing-joker .hand-heading{justify-content:flex-start}.inspecting .hand-heading .player-label,.choosing-joker .hand-heading .player-label{text-align:left}.sleeve-body{stroke:#151c18}.sleeve-seam{stroke:#4b4b38;opacity:.18}
.game-table>.moving-forearm{z-index:1}.choosing-joker .table-actions,.choosing-joker .turn-status,.choosing-joker .hand-heading{display:none}.choosing-joker .inspection-space{height:100px}.game-table:not(.inspecting):not(.choosing-joker):not(.table-ended) .inspection-space{height:28px}
@media(max-width:600px){.opponent-hand{height:72px;margin-top:17px}.table-center{margin-top:22px}.choosing-joker .inspection-space{height:90px}.choosing-joker .hand{max-height:160px}.choosing-joker .joker-panel{margin-top:8px}.game-table:not(.inspecting):not(.choosing-joker):not(.table-ended) .inspection-space{height:20px}}
/* Approved portrait scene: art and all live pieces share one coordinate space. */
body{background:#080e0b}.shell{max-width:900px;padding:0 10px 18px}.header{min-height:52px;padding:7px 2px;border:0}.table-heading{font-size:19px}.header-actions .quiet{font-size:12px;padding:7px 12px}.intro{padding:3px 2px 10px;font-size:11px}.game-table{container-type:inline-size;width:100%;aspect-ratio:2/3;height:auto;min-height:0;padding:0;border:0;border-radius:0;box-shadow:none;background:#87b47a url('table/jade-scene-v2.png') center/100% 100% no-repeat;--card-w:13.8cqw;--card-h:19.8cqw}.game-table::before{display:none}.game-table>.table-decoration{inset:0;z-index:0}.deco-fan,.marble-corner,.rim-light{display:none}.game-table>.opponent-resting-arms{inset:0;width:100%;height:100%;overflow:visible;z-index:2}.game-table>.resting-arms{inset:0;width:100%;height:100%;z-index:2}.rest-arm{transition:none!important;filter:none}.rest-arm img{object-fit:fill}.cpu-arm{width:31.25cqw;height:27.344cqw;top:0;bottom:auto}.cpu-arm-left{left:6.348cqw;right:auto;transform:none}.cpu-arm-right{right:6.348cqw;left:auto;transform:scaleX(-1)}.rest-arm-left{left:0;right:auto;top:85.449cqw;bottom:auto;width:30.762cqw;height:48.828cqw;transform:none}.rest-arm-right{right:0;left:auto;top:85.449cqw;bottom:auto;width:30.762cqw;height:48.828cqw;transform:scaleX(-1)}.table-pug{left:78.125cqw;top:18.555cqw;right:auto;width:21.875cqw;transform:none;filter:none}.table-drink{right:auto;transform:none;filter:none}.drink-near{left:0;top:53.516cqw;width:22.949cqw}.drink-far{left:6.543cqw;top:21.484cqw;width:13.965cqw}.table-top{position:absolute;top:8cqw;right:1.7cqw;left:auto;z-index:6;margin:0}.round-badge{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.table-link{font-size:0;width:5.2cqw;height:5.2cqw;min-width:24px;min-height:24px;padding:0;display:grid;place-items:center;border-width:.15cqw}.table-link span{font-size:clamp(15px,2.7cqw,26px);padding:0}.opponent{display:contents}.opponent>.player-label{position:absolute;overflow:hidden;clip-path:inset(50%);width:1px;height:1px}.opponent-hand{position:absolute;left:19cqw;top:29.9cqw;width:62cqw;max-width:none;height:17.7cqw;margin:0;overflow:visible;gap:0;z-index:3}.opponent-mini{width:12.5cqw;height:17.9cqw;margin-left:calc(-1 * var(--cpu-overlap,4.25cqw));border:0;border-radius:.7cqw;background:url('table/approved-card-back-v2.png') center/100% 100%;box-shadow:0 .3cqw .5cqw #23321c66;transform:rotate(var(--rot))}.opponent-mini:first-child{margin-left:0}.opponent-extra{right:-3cqw;top:8cqw;font-size:2cqw;background:#0e392c;color:#ffe4a0;border:1px solid #d9b66b;border-radius:50%;padding:.5cqw;z-index:4}.table-center{position:absolute;left:34cqw;top:53cqw;display:grid;grid-template-columns:13.8cqw 13.8cqw;column-gap:5.3cqw;min-height:0;margin:0;padding:0;z-index:3}.deck-zone,.discard-zone{position:relative}.card{width:var(--card-w);height:var(--card-h);padding:.7cqw;border-width:clamp(1px,.18cqw,2px);border-radius:.9cqw;box-shadow:inset 0 0 0 1px #fff9e6,0 .4cqw .65cqw #24442650}.card-corner{font-size:calc(var(--card-w)*.24);top:calc(var(--card-w)*.08);left:calc(var(--card-w)*.08)}.card-corner small{font-size:calc(var(--card-w)*.17)}.card-corner.bottom{top:auto;left:auto;right:calc(var(--card-w)*.08);bottom:calc(var(--card-w)*.08)}.card-suit{font-size:calc(var(--card-w)*.55)}.card-back{background:url('table/approved-card-back-v2.png') center/100% 100%;border:0;padding:0}.card-back.deck:not(.empty){box-shadow:.25cqw .5cqw 0 #e4d2a3,.4cqw 1cqw 0 #baa16c,.5cqw 1.6cqw 0 #947741,.4cqw 2cqw 1.3cqw #35452966}.card-back.empty{border:.13cqw solid #d4bb6c;border-radius:.8cqw;background:none}.pile-label{font:bold 2.65cqw/1.1 Georgia,serif;padding:.4cqw 1.65cqw;margin-top:1.5cqw;min-height:3.5cqw;border-width:.19cqw;white-space:nowrap;text-shadow:0 .1cqw .2cqw #0009;box-shadow:inset 0 .1cqw .1cqw #fff5bc90,0 .3cqw .4cqw #243a2280}.deck-count{font-size:1.1cqw;margin-top:.7cqw}.deck-hint{display:none}.legal-guide{position:absolute;left:37cqw;top:1.5cqw;width:15cqw;min-width:0;align-self:auto;padding:0}.legal-guide .pile-label{font-size:2.2cqw;padding:.4cqw 1.4cqw;margin:0;min-height:0}.legal-guide>div{flex-direction:column;align-items:center;gap:1cqw;margin:1.6cqw 0 .8cqw}.legal-guide b{width:5.5cqw;height:5.5cqw;font-size:3.5cqw;border-width:.18cqw;border-radius:.7cqw}.legal-guide>span{font-size:1.7cqw}.called-value-label{font-size:2cqw!important;margin-bottom:1cqw}.game-table .inspection-space{position:absolute;top:64cqw;left:0;width:100%;height:28cqw;margin:0}.game-table .turn-status,.game-table.inspecting .turn-status,.game-table.choosing-joker .turn-status{position:absolute;top:17.8cqw;left:0;width:100%;margin:0;min-height:0;align-items:center;display:flex;gap:0;text-align:center;z-index:3}.turn-status strong{font-size:2.8cqw;min-width:15.5cqw;padding:.4cqw 2.3cqw;border-width:.2cqw}.turn-status>span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.your-area{position:absolute;inset:0;pointer-events:none;z-index:4}.game-table .hand-heading{display:block;position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.game-table .hand{position:absolute;top:94cqw;left:18cqw;width:64cqw;height:23cqw;max-height:none;min-height:0;padding:0;overflow:visible;flex-wrap:nowrap;align-items:center;justify-content:center;gap:0;pointer-events:auto}.hand>.card{--card-w:14cqw;--card-h:20cqw;margin-left:calc(-1 * var(--overlap,3cqw));transform:translateY(var(--arc,0cqw)) rotate(var(--tilt,0deg));flex-shrink:0}.hand>.card:first-child{margin-left:0}.hand>.card:disabled{opacity:1;filter:none}.hand.crowded{justify-content:flex-start;overflow-x:auto;overflow-y:hidden;padding:1cqw 0}.game-table .table-actions{position:absolute;top:125.5cqw;left:0;right:0;margin:0;min-height:0;pointer-events:auto;display:flex;justify-content:center}.keep-card-button{width:23cqw;min-width:100px;min-height:32px;padding:.7cqw 1.4cqw;font:bold 3cqw Georgia,serif;border-width:.23cqw;box-shadow:inset 0 .1cqw .2cqw #fff5bf90,0 .4cqw .6cqw #163b2170}.game-table .joker-panel{position:absolute;top:114.8cqw;left:17.7cqw;width:64.6cqw;padding:1.15cqw 1.8cqw 1.3cqw;margin:0;border-width:.32cqw;border-radius:3cqw;pointer-events:auto;box-shadow:inset 0 .15cqw .25cqw #fff5bf90,0 .4cqw .7cqw #23442280}.joker-panel h3{font:bold 3.9cqw/1.1 Georgia,serif;margin:0 0 .4cqw}.joker-panel p{font:italic 2.3cqw/1.1 Georgia,serif;margin:0 0 1.2cqw}.rank-choices{gap:.7cqw;justify-content:center}.rank-choice{flex:0 1 calc((100% - 4.2cqw)/7);min-width:0;min-height:max(24px,4.3cqw);font:clamp(13px,3cqw,27px)/1 Georgia,serif;padding:.3cqw .2cqw;border-width:.22cqw;border-radius:.9cqw;box-shadow:inset 0 0 0 1px #fff7cc,0 .2cqw .3cqw #0006}.game-table .end-actions{position:absolute;top:128cqw;left:22cqw;width:56cqw;margin:0;gap:3cqw;pointer-events:auto;justify-content:center}.end-actions button{font:bold 2.8cqw Georgia,serif;padding:.6cqw 2.5cqw;min-height:30px;border-width:.2cqw}.table-outcome{position:absolute;left:0;width:100%;margin:0;gap:.5cqw}.table-outcome strong{font:bold 3.8cqw Georgia,serif;padding:.4cqw 3cqw;border-width:.22cqw}.table-outcome span{font:3cqw Georgia,serif;color:#ffedaa;text-shadow:0 .15cqw .25cqw #39462b}:is(#cpuOutcome,#replay-cpuOutcome){top:47.5cqw}:is(#youOutcome,#replay-youOutcome){top:83cqw}.game-table.table-ended .opponent-hand{position:absolute;top:28cqw;left:18cqw;width:64cqw;height:19.5cqw;min-height:0;max-height:23cqw;overflow:auto;flex-wrap:nowrap;gap:.5cqw}.opponent-hand.revealed>.card{--card-w:11cqw;--card-h:15.7cqw;width:11cqw;height:15.7cqw;margin-left:-1cqw}.opponent-hand.revealed .card-corner{font-size:2.65cqw}.opponent-hand.revealed .card-suit{font-size:6cqw}.game-table.table-ended .table-center{position:absolute;top:58cqw;left:34cqw;grid-template-columns:13.8cqw 13.8cqw;column-gap:5.3cqw;min-height:0;margin:0}.game-table.table-ended .turn-status,.game-table.table-ended .table-actions{display:none}.table-ended .pile-label{font-size:2.2cqw;padding:.45cqw 1.1cqw}.table-ended .deck-hint{display:block;font-size:1.5cqw;margin-top:.5cqw}.table-ended .hand{top:95cqw}.card-flight{filter:none}.grip-hand{left:51%;top:57%;width:146%;filter:none;image-rendering:auto}.left-grip .grip-hand{left:-100%;scale:-1 1}.opponent-grip .grip-hand{left:-12%;top:-218%;rotate:180deg}.game-table>.moving-forearm{filter:none}.carried-fan .grip-hand{width:14cqw}.table-footer{max-width:850px;margin:auto;font-size:10px;padding:10px 2px}.rim-scene{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.rim-scene path{fill:none;stroke:#fff0a3;stroke-width:3;filter:drop-shadow(0 0 7px #ffe17c);opacity:0}.game-table[data-turn=you] .rim-near-path,.game-table[data-turn=cpu] .rim-far-path{animation:rim-shine 3s ease-in-out infinite}
@media(max-width:600px){.shell{padding:0 4px 12px}.header{min-height:42px;gap:5px;padding:5px}.table-heading{font-size:14px}.header-actions{gap:4px}.header-actions .quiet{font-size:10px;padding:6px 8px}.intro{padding:2px 6px 7px;font-size:9px}.scoreboard{font-size:9px;gap:6px}.scoreboard b{font-size:12px}.game-table{min-height:0;border:0;padding:0;border-radius:0}.turn-status strong{font-size:3.1cqw;min-width:18cqw}.game-table .hand{max-height:none}.game-table.choosing-joker .hand{max-height:none}.table-footer{padding:10px 6px;font-size:9px}.keep-card-button{font-size:max(13px,3cqw)}.joker-panel p{font-size:max(9px,2.3cqw)}.deck-count{font-size:1.4cqw}.pile-label{font-size:2.85cqw}.legal-guide .pile-label{font-size:2.55cqw}.legal-guide>span{font-size:1.9cqw}.end-actions button{font-size:max(12px,2.8cqw)}}

/* The approved grip already includes the complete sleeve. */
.game-table>.moving-forearm{display:none}

.game-table .joker-panel{top:118cqw}

/* Artwork is sliced directly from the approved interface mockups. */
.ui-screen{--ui-ink:#062e20;--ui-gold:#e5b64d;--ui-line:linear-gradient(120deg,#68400d,#f9cd58 12%,#fffbd4 21%,#a76a11 30%,#ffe58d 43%,#fff6b8 53%,#97600d 65%,#ffde70 82%,#6f430b 94%,#eec164);--ui-jade:url('interface/jade-texture.png');--ui-ivory:url('interface/ivory-texture.png');color:var(--ui-ink);font-family:Arial,Helvetica,sans-serif;background:#8dbe91 var(--ui-jade) repeat;background-size:330px 280px;isolation:isolate}
.ui-screen button,.ui-screen a{touch-action:manipulation}.ui-screen :focus-visible{outline:3px solid #123f2b;outline-offset:3px}.modal.ui-screen{width:820px;max-width:calc(100vw - 20px);max-height:94svh;border:5px solid transparent;border-image:var(--ui-line) 1;padding:22px 25px 28px;border-radius:0;box-shadow:0 15px 70px #0009,inset 0 0 0 2px #3c642f;scrollbar-color:#c49b42 #608d65}.ui-screen::backdrop{background:#061b15cf;backdrop-filter:blur(6px)}
.ui-screen .screen-title{position:relative;min-height:83px;border:20px solid transparent;border-image:url('interface/title-frame.png') 62 78 / 20px 25px / 0 stretch;background:#fff4db var(--ui-ivory) center/200px 130px;border-radius:25px;display:flex;align-items:center;justify-content:center;margin:0 20px 20px;padding:0 46px;box-shadow:0 7px 9px #173c2859}.ui-screen .screen-title h2{font:bold clamp(31px,5vw,54px)/1.1 Georgia,serif;color:#062b17;margin:0;white-space:nowrap;letter-spacing:-1px}.screen-back,.screen-settings{position:absolute;left:0;top:50%;transform:translateY(-50%);background:none;border:0;border-radius:0;color:#0c3924;font:42px Georgia,serif;padding:0 10px}.screen-settings{left:auto;right:0;font-size:35px}.screen-tagline{font:italic 26px/1.3 Georgia,serif!important;text-align:center;margin:0 0 22px;color:#082c1c}.rules-screen .screen-tagline{font:600 21px/1.35 Arial,sans-serif!important;color:#fff7d9;text-shadow:0 1px 2px #28502d}.rule-cards{display:flex;flex-direction:column;gap:15px}.rule-card,.dashboard-player,.dashboard-summary>div,.history-game,.look-group,.glow-panel{border:15px solid transparent;border-image:url('interface/ivory-frame.png') 38 / 15px / 0 stretch;background:#fff3d9 var(--ui-ivory) center/200px 130px;border-radius:28px;box-shadow:0 5px 6px #23412a75;position:relative}.rule-card{padding:7px 17px 9px}.rule-card h3{font:bold clamp(24px,3.4vw,36px)/1.1 Georgia,serif;margin:0 0 9px;letter-spacing:-.5px}.rule-card h3 span{display:inline-block;margin-right:9px}.rule-card p{font-size:17px;line-height:1.4;margin:0}.rule-card small{font-size:13px;line-height:1.4;display:block;margin-top:10px;font-style:italic}.rule-card.illustrated{display:grid;grid-template-columns:1.35fr 1fr;gap:17px;align-items:center}.rule-card.illustrated>img{display:block;width:100%;max-height:170px;object-fit:contain;border-left:1px solid #b68d3c;padding-left:15px;mix-blend-mode:multiply}.rule-card .rule-points{margin-top:14px;padding-top:11px;border-top:1px solid #b88f40;font-size:14px;text-align:center;line-height:1.6}.complete-rules{margin:24px 8px 20px}.complete-rules summary{font:bold 17px Georgia,serif;cursor:pointer}.complete-rules .rules-list{font-size:14px;line-height:1.6;background:#fff4dbe6;padding:20px 20px 8px 40px;border-radius:12px;margin-top:13px}.complete-rules .rules-list b{font-size:19px}.ui-screen .screen-cta{display:block;width:80%;margin:25px auto 0;min-height:74px;padding:8px 26px;border:17px solid transparent;border-image:url('interface/green-button-frame.png') 50 95 / 17px 28px / 0 stretch;background:linear-gradient(120deg,#073d28,#005132 55%,#052b1c);border-radius:999px;color:#ffe18c;text-shadow:0 1px #55360e,0 2px 3px #0007;font:bold 34px/1 Georgia,serif;box-shadow:0 6px 7px #0d382980}.ui-screen .screen-cta:hover{filter:brightness(1.08)}
.dashboard-player{display:flex;align-items:center;gap:20px;padding:2px 20px;min-height:90px;margin:0 15px 20px}.dashboard-player>span{display:grid;place-items:center;width:60px;height:60px;border:4px solid transparent;background:var(--ui-ivory) padding-box,var(--ui-line) border-box;border-radius:50%;font:48px Georgia,serif}.dashboard-player strong{font:bold 35px Georgia,serif}.ui-screen .dashboard-summary{grid-template-columns:1fr 1fr;gap:15px;margin:0 15px 22px}.dashboard-summary>div{padding:0 8px 5px;min-height:110px}.dashboard-summary strong{font:bold 60px/.95 Georgia,serif}.dashboard-summary span{display:block;font:bold 23px/1.1 Georgia,serif}.ui-screen .games-heading{display:flex;align-items:center;justify-content:center;gap:20px;font:bold italic 31px Georgia,serif;margin:24px 0 10px}.games-heading::before,.games-heading::after{content:'';height:3px;flex:1;max-width:95px;background:var(--ui-line);box-shadow:0 1px 2px #265333}.ui-screen .history-notice{text-align:center;font-size:12px!important;color:#24472f;margin:8px 0 15px}.ui-screen .games-list{gap:16px}.ui-screen .history-game{width:100%;grid-template-columns:minmax(0,1fr) auto auto;gap:15px;padding:8px 17px;align-items:center;color:var(--ui-ink);text-shadow:none;min-height:102px;text-align:left}.history-game:hover{filter:brightness(1.025)}.ui-screen .history-opponent{padding-right:10px;border-right:1px solid #b58b34}.ui-screen .history-opponent b{font:bold 26px Georgia,serif;display:block}.ui-screen .history-opponent small{font-size:12px;line-height:1.4;margin-top:6px}.ui-screen .history-outcome,.ui-screen .history-link{border:3px solid transparent;border-radius:999px;background:linear-gradient(#0a4e32,#002e1f) padding-box,var(--ui-line) border-box;color:#ffe695;font:bold 21px Georgia,serif;padding:8px 13px;text-shadow:0 1px #4a310c;box-shadow:0 3px 4px #0003;text-align:center}.ui-screen .history-outcome.winner{background:linear-gradient(#ffeab3,#d9a625) padding-box,var(--ui-line) border-box;color:#0c301d;text-shadow:0 1px #fff7dc}.ui-screen .history-outcome.drawn{background:#fff4dc padding-box,var(--ui-line) border-box;color:#163c24;text-shadow:none}.ui-screen .history-link{grid-column:auto;font-size:21px;text-decoration:none;white-space:nowrap}.dashboard-help{text-align:center;font-size:16px!important;margin:19px 0 0}.screen-nav{display:grid;grid-template-columns:1fr 1fr 1fr;margin:24px 0 0;padding:5px 10px;border:12px solid transparent;border-image:url('interface/ivory-frame.png') 38 / 12px / 0 stretch;background:#fff4db var(--ui-ivory);border-radius:25px}.screen-nav>*{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#0d3422;font:28px Georgia,serif;background:none;border:0;padding:7px 10px}.screen-nav span span,.screen-nav button span,.screen-nav a span{font:bold 17px Georgia,serif}.screen-nav .current{background:linear-gradient(#13593c,#033721);border-radius:20px;color:#ffe18c;box-shadow:inset 0 0 0 2px #e8c674}.history-empty{color:#173e29!important;font-size:15px!important;line-height:1.7;background:#fff5dddb;padding:25px;border-radius:18px;text-align:center}
.ui-screen.game-details{width:850px}.game-details .modal-head{justify-content:flex-end}.game-details .modal-head .eyebrow{display:none}.game-details .close{border:2px solid #eccc6e;border-radius:50%;background:#103f2b;color:#ffe39b;width:40px;height:40px;line-height:24px;padding:3px}.ui-screen.game-details>h2{font:bold 46px Georgia,serif;text-align:center;margin:-32px 0 18px}.gold-heading,.game-details .end-total,.game-details .end-outcome{color:#ffde71;text-shadow:0 1px #fff8c9,1px 2px #8b530e,2px 3px #634009,0 4px 5px #23452f}.game-details .details-meta,.game-details #resultText{color:#103621;text-align:center}.game-details .result-player{border:15px solid transparent;border-image:url('interface/jade-frame.png') 44 / 15px / 0 stretch;background:var(--ui-jade);border-radius:24px;padding:8px 12px 22px}.game-details .result-player h3{font:bold 22px Georgia,serif;margin:5px 0 10px}.game-details .end-total{font:bold 78px/.95 Georgia,serif}.game-details .end-points{font:bold 18px Georgia,serif}.game-details .end-outcome{font:bold 31px Georgia,serif;margin:18px 0 7px}.game-details .end-count{font:bold 18px Georgia,serif}.game-details .end-cards{border-top:2px solid #edc65f;margin-top:18px;padding-top:20px;gap:18px 12px}.game-details .end-card{width:calc(50% - 6px)}.game-details .end-card .card{--card-w:100%;--card-h:auto;width:100%;height:auto;aspect-ratio:1/1.43;border:3px solid transparent;border-radius:12px;background:linear-gradient(#fff8e6,#f9ebcd) padding-box,var(--ui-line) border-box;box-shadow:0 3px 5px #2a4b2d77}.game-details .end-card .card-corner{font-size:clamp(19px,3.6vw,32px)}.game-details .end-card .card-corner small{font-size:16px;margin:0}.game-details .end-card .card-suit{font-size:clamp(34px,5.3vw,52px)}.game-details .end-card>small{font:bold 18px Georgia,serif;margin-top:9px}.game-details .points-key{font-size:13px!important}.game-details #detailsBack{display:block;margin:24px auto 0;max-width:310px;min-height:45px}
/* The independent appearance controls use the same native ivory and gold trim. */
body.look-page{min-height:100svh;background:#8dbe91 var(--ui-jade);color:var(--ui-ink)}.look-page .look-shell{max-width:1000px;padding:20px 40px 145px}.look-page .look-header{height:78px;border:0;position:relative}.look-page .wordmark{display:block;width:275px}.wordmark>img{display:block;width:100%;height:auto}.look-close{border:3px solid transparent;background:linear-gradient(#115536,#032d20) padding-box,var(--ui-line) border-box;border-radius:50%;width:49px;height:49px;display:grid;place-items:center;color:#ffdf8c;font:43px/.8 Georgia,serif;box-shadow:0 3px 7px #203d2380}.look-page .look-intro{text-align:center;padding:10px 0 25px}.look-page .look-intro h1{font:bold 52px/1.05 Georgia,serif;color:#052d1d;margin:0 0 12px;letter-spacing:-1px}.look-page .look-intro .eyebrow{font:12px Arial,sans-serif;letter-spacing:4px;color:#0d3723;margin:0}.look-tabs{display:flex;gap:8px;margin:0 0 20px}.look-tabs a{flex:1;text-align:center;padding:12px 6px;font:bold 25px Georgia,serif;border:3px solid transparent;background:#306d4c55 padding-box,var(--ui-line) border-box;border-radius:99px;color:#fff3cf;box-shadow:0 4px 8px #386d4050}.look-tabs a.active{color:#0d3525;background:var(--ui-ivory) padding-box,var(--ui-line) border-box;box-shadow:0 0 14px #fce67ca6}.look-page .look-layout{display:block}.look-page .preview-panel{position:relative;top:0;margin:0 0 20px;max-width:none;background:var(--ui-jade);border:15px solid transparent;border-image:url('interface/jade-frame.png') 44 / 15px / 0 stretch;border-radius:25px;box-shadow:0 5px 9px #1e542e77}.look-page .preview-heading{padding:6px 12px 0}.look-page .preview-heading h2{font:bold 31px Georgia,serif}.look-page .preview-heading>span{font-size:11px;color:#1d472f;letter-spacing:3px}.look-page .preview-stage{aspect-ratio:1.55;height:auto;max-height:none;overflow:hidden;background:none}.look-page #lookCanvas{height:100%;width:100%;object-fit:cover;object-position:center 16%}.look-page .preview-description{border:0;font-size:12px;color:#143c25;margin:0 15px 8px;padding:0;text-align:center}.look-page .preview-note{font-size:11px;color:#244f32;text-align:center;margin:0 15px 8px}.look-page .look-group{background:var(--ui-ivory);border-width:11px;border-image-width:11px;margin-bottom:11px;border-radius:20px;color:#123a27;box-shadow:0 3px 5px #2f573645}.look-page .look-group[open]{border-color:transparent}.look-page .look-group>summary{gap:12px;padding:1px 9px;min-height:38px}.look-page .group-number{font:bold 18px Georgia,serif;border:0;width:28px;height:auto;color:#59745d}.look-page .group-title{font:bold 22px Georgia,serif;display:flex;align-items:center;gap:12px;flex:1}.look-page .group-summary{font:12px/1.35 Arial,sans-serif;color:#2a4834;margin:0 10px 0 auto;max-width:330px;text-align:right}.look-page .group-arrow{font-size:25px;color:#153b26}.look-page .group-body{padding:16px 12px 5px}.look-page .group-tip,.look-page .tattoo-help{color:#45624b;font-size:12px;margin-bottom:15px}.look-page .option-field legend{font-size:13px;color:#163d28}.look-page .choice>span{background:#e5e0c8b3;color:#163b28;border:1px solid #aaa488;border-radius:9px;min-height:42px;height:auto;padding:9px 10px;font-size:13px}.look-page .choice input:checked+span{border:2px solid #ffb71c;background:linear-gradient(135deg,#fff1c1,#f7d779 48%,#ffe8a0);box-shadow:inset 0 0 0 2px #fff6d1,0 0 9px #f8b83299;color:#153622}.look-page .choice input:focus-visible+span{outline-color:#173f2a}.look-page .swatch>span{min-height:0;width:38px;height:38px;padding:0;border:2px solid #f1dba6}.look-page .swatch input:checked+span{box-shadow:0 0 10px #ffca3a;border:2px solid #fff0ba;outline:2px solid #b77f1d}.look-page .glow-panel{display:flex;align-items:center;gap:14px;padding:4px 12px;border-width:11px;border-image-width:11px;border-radius:20px;margin-bottom:12px;scroll-margin-top:20px}.glow-panel>span{font-size:39px;color:#c69636}.glow-panel h2{font:bold 24px Georgia,serif;margin:0 0 3px}.glow-panel p{font-size:12px;line-height:1.4;color:#517057;margin:0}.glow-choices{margin:0 0 0 auto;min-width:145px;padding:0;border:0;display:flex;gap:0}.glow-choices .choice>span{min-height:41px}.look-page .storage-note{color:#285237;text-align:center;font-size:12px}.look-page .save-bar{background:var(--ui-ivory);border:5px solid transparent;border-image:var(--ui-line) 1;box-shadow:0 -4px 20px #28512d55;backdrop-filter:none;padding:14px 35px calc(14px + env(safe-area-inset-bottom))}.look-page .save-bar>div{max-width:900px}.look-page .save-info>span{color:#2c4a31;font-size:12px}.look-page .reset-button{color:#173b26;font:bold 18px Georgia,serif;text-decoration:none;padding-top:5px}.look-page .reset-button::before{content:'⟳ ';font:26px Georgia,serif}.look-page .save-button{border:5px solid transparent;background:linear-gradient(#10472e,#022f1f) padding-box,var(--ui-line) border-box;border-radius:999px;color:#ffe69f;font:bold 24px Georgia,serif;min-width:240px;padding:11px 24px;box-shadow:0 0 15px #f7cc6890,inset 0 0 0 1px #fff2bd}.look-page .preview-shortcut{color:#294e34}.look-page .look-shell::before,.look-page .look-shell::after{content:'';position:absolute;top:0;left:0;width:135px;height:175px;background:url('interface/deco-corner.png') top left/100% 100%;z-index:-1;pointer-events:none}.look-page .look-shell{position:relative;isolation:isolate}.look-page .look-shell::after{left:auto;right:0;transform:scaleX(-1)}
/* Leave the complete palms within the table; sleeves continue toward its edge. */
.game-table .rest-arm-left{left:2.8cqw;transform:rotate(8deg);transform-origin:20% 85%}.game-table .rest-arm-right{right:2.8cqw;transform:scaleX(-1) rotate(8deg);transform-origin:80% 85%}.game-table .rest-arm.reaching{opacity:0!important}
html[data-gold-glow=off] .game-table .rim-scene path{animation:none!important;opacity:0!important}html[data-gold-glow=off] .card.playable,html[data-gold-glow=off] .deck:not(:disabled){box-shadow:0 0 0 2px #e7c26c!important}html[data-gold-glow=off] .deck:not(:disabled)::after{display:none}
@media(min-width:1100px){.look-page .look-shell{max-width:1300px}.look-page .look-layout{display:grid;grid-template-columns:1fr 1fr;gap:25px}.look-page .preview-panel{position:sticky;top:20px}.look-page .preview-stage{aspect-ratio:1}.look-page #lookCanvas{object-fit:contain}.look-page .group-title{flex-wrap:wrap;gap:4px}.look-page .group-summary{width:100%;margin:0;text-align:left}}
@media(max-width:600px){.modal.ui-screen{max-width:calc(100vw - 12px);max-height:96svh;padding:14px 10px 22px;border-width:3px}.ui-screen .screen-title{min-height:68px;margin:0 7px 15px;padding:0 25px;border-width:17px;border-image-width:17px}.ui-screen .screen-title h2{font-size:34px}.screen-back{font-size:30px;padding:0}.screen-settings{font-size:27px;padding:0}.screen-tagline{font-size:20px!important;margin-bottom:18px}.rules-screen .screen-tagline{font-size:14px!important}.rule-cards{gap:12px}.rule-card{border-width:10px;border-image-width:10px;padding:7px 8px 9px;border-radius:21px}.rule-card h3{font-size:25px;margin-bottom:8px}.rule-card h3 span{margin-right:3px}.rule-card p{font-size:13px;line-height:1.45}.rule-card small{font-size:11px;margin-top:8px}.rule-card.illustrated{grid-template-columns:1.4fr 1fr;gap:8px}.rule-card.illustrated>img{padding-left:7px;max-height:145px}.rule-card .rule-points{font-size:11px}.ui-screen .screen-cta{width:88%;min-height:65px;font-size:30px;margin-top:22px;border-image-width:14px 20px;border-width:14px;padding:6px 18px}.dashboard-player{border-width:11px;border-image-width:11px;padding:2px 10px;min-height:75px;margin:0 6px 15px;gap:12px}.dashboard-player>span{width:43px;height:43px;font-size:34px}.dashboard-player strong{font-size:27px}.ui-screen .dashboard-summary{gap:10px;margin:0 6px 18px}.dashboard-summary>div{border-width:11px;border-image-width:11px;min-height:88px;padding:0 4px 4px;border-radius:20px}.dashboard-summary strong{font-size:45px}.dashboard-summary span{font-size:19px}.ui-screen .games-heading{font-size:26px;gap:12px;margin-top:18px}.ui-screen .history-notice{font-size:10px!important}.ui-screen .history-game{border-width:10px;border-image-width:10px;min-height:95px;padding:5px 7px;gap:6px;grid-template-columns:minmax(0,1fr) auto}.ui-screen .history-opponent b{font-size:21px}.ui-screen .history-opponent small{font-size:10px}.ui-screen .history-opponent{grid-row:1/3;padding-right:8px}.ui-screen .history-outcome{font-size:17px;padding:4px 8px;justify-self:stretch}.ui-screen .history-link{grid-column:2;font-size:17px;padding:5px 9px}.dashboard-help{font-size:12px!important}.screen-nav{margin-top:20px;padding:2px 4px;border-width:10px;border-image-width:10px}.screen-nav>*{padding:5px;font-size:26px}.screen-nav span span,.screen-nav button span,.screen-nav a span{font-size:16px}.ui-screen.game-details>h2{font-size:36px}.game-details .result-scores{gap:9px}.game-details .result-player{border-width:10px;border-image-width:10px;padding:4px 4px 17px;border-radius:19px}.game-details .result-player h3{font-size:17px}.game-details .end-total{font-size:59px}.game-details .end-points{font-size:14px}.game-details .end-outcome{font-size:23px;margin:14px 0 7px}.game-details .end-count{font-size:14px}.game-details .end-cards{gap:15px 8px;padding-top:15px}.game-details .end-card{width:calc(50% - 4px)}.game-details .end-card .card{border-radius:8px;border-width:2px}.game-details .end-card .card-corner{font-size:19px;left:4px;top:4px}.game-details .end-card .card-corner.bottom{left:auto;right:4px;top:auto;bottom:4px}.game-details .end-card .card-corner small{font-size:10px}.game-details .end-card .card-suit{font-size:30px}.game-details .end-card>small{font-size:14px}.look-page .look-shell{padding:12px 13px 145px}.look-page .look-header{height:61px;margin:0 12px}.look-page .wordmark{width:175px}.look-close{width:36px;height:36px;font-size:32px}.look-page .look-intro{padding:8px 0 18px}.look-page .look-intro h1{font-size:37px;margin-bottom:9px}.look-page .look-intro .eyebrow{font-size:9px;letter-spacing:2.7px}.look-tabs{gap:6px;margin-bottom:14px}.look-tabs a{font-size:18px;padding:9px 5px;border-width:2px}.look-page .preview-panel{border-width:10px;border-image-width:10px;margin-bottom:14px;border-radius:20px}.look-page .preview-heading{padding:3px 7px 0}.look-page .preview-heading h2{font-size:24px}.look-page .preview-heading>span{font-size:8px;letter-spacing:2px}.look-page .preview-stage{aspect-ratio:1.5;height:auto}.look-page .preview-description{font-size:10px;margin-bottom:5px}.look-page .preview-note{font-size:9px;margin:0 5px 3px}.look-page .look-group{border-width:8px;border-image-width:8px;border-radius:15px;margin-bottom:9px}.look-page .look-group>summary{padding:1px 4px;min-height:32px;gap:5px}.look-page .group-number{width:22px;font-size:14px}.look-page .group-title{font-size:18px;gap:3px;display:block}.look-page .group-summary{font-size:10px;display:block;text-align:left;margin:3px 0 0}.look-page .group-arrow{font-size:21px}.look-page .group-body{padding:13px 6px 5px}.look-page .group-tip,.look-page .tattoo-help{font-size:11px}.look-page .choice>span{font-size:12px;padding:8px 6px;min-height:39px}.look-page .swatch>span{padding:0;min-height:0;width:31px;height:31px}.look-page .swatches{gap:13px}.look-page .glow-panel{gap:8px;padding:4px 6px;border-width:8px;border-image-width:8px;border-radius:15px}.glow-panel>span{font-size:30px}.glow-panel h2{font-size:19px}.glow-panel p{font-size:10px;line-height:1.3}.glow-choices{min-width:95px}.glow-choices .choice>span{font-size:12px;padding:6px 10px;min-height:34px}.look-page .save-bar{padding:11px 14px calc(11px + env(safe-area-inset-bottom));border-width:3px}.look-page .save-bar>div{gap:12px}.look-page .save-info>span{font-size:10px;max-width:130px}.look-page .reset-button{font-size:16px}.look-page .preview-shortcut{display:none}.look-page .save-button{min-width:150px;font-size:22px;padding:10px 15px;border-width:3px}.look-page .look-shell::before,.look-page .look-shell::after{width:70px;height:91px}}
.ui-screen .screen-title{border-image-slice:28 70}.ui-screen .rule-card,.ui-screen .dashboard-player,.ui-screen .dashboard-summary>div,.ui-screen .history-game,.look-page .look-group,.look-page .glow-panel{border-image-slice:38}.ui-screen .screen-cta{border-image-slice:45 85}
.ring-slots .choice{flex:0 0 calc(20% - 6px)}.look-page .ring-slots .choice>span{font-size:11px;padding:8px 4px}html[data-gold-glow=off] .look-tabs a.active,html[data-gold-glow=off] .look-page .save-button,html[data-gold-glow=off] .look-page .choice input:checked+span{box-shadow:none}
/* Fully visible card rows and a single bright gold pulse; cards never jiggle. */
.game-table .hand,.game-table .hand.crowded,.game-table.table-ended .hand{top:var(--hand-top,94cqw);left:10cqw;width:80cqw;height:auto;max-height:none;min-height:0;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:1.6cqw;padding:0;overflow:visible}
.game-table .hand>.card{--card-w:13.7cqw;--card-h:18.4cqw;width:13.7cqw;height:18.4cqw;margin:0;transform:none;translate:none;transition:none;flex:0 0 13.7cqw}
.game-table .hand .card-corner{font-size:3.6cqw;top:1cqw;left:.9cqw}.game-table .hand .card-corner.bottom{top:auto;left:auto;right:.9cqw;bottom:1cqw}.game-table .hand .card-corner small{font-size:2.55cqw}.game-table .hand .card-suit{font-size:7.3cqw}
.game-table .table-actions,.game-table .joker-panel,.game-table .end-actions{top:var(--controls-top,117cqw)}
.game-table .rest-arm-left,.game-table .rest-arm-right{top:calc(var(--hand-top,94cqw) - 8.55cqw)}
.game-table.table-ended .opponent-hand{top:var(--cpu-cards-top,38cqw);left:10cqw;width:80cqw;height:auto;max-height:none;min-height:0;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:1.6cqw;overflow:visible}
.game-table.table-ended .opponent-hand>.card{--card-w:13.7cqw;--card-h:18.4cqw;width:13.7cqw;height:18.4cqw;flex:0 0 13.7cqw;margin:0;transform:none}.game-table.table-ended .opponent-hand .card-corner{font-size:3.6cqw;top:1cqw;left:.9cqw}.game-table.table-ended .opponent-hand .card-corner.bottom{top:auto;left:auto;right:.9cqw;bottom:1cqw}.game-table.table-ended .opponent-hand .card-corner small{font-size:2.55cqw}.game-table.table-ended .opponent-hand .card-suit{font-size:7.3cqw}
.game-table.table-ended .table-center{top:var(--pile-top,62cqw)}.game-table.table-ended .table-outcome{display:flex;flex-direction:column;align-items:center;gap:.6cqw;z-index:5;pointer-events:none}.game-table.table-ended :is(#cpuOutcome,#replay-cpuOutcome){top:25.5cqw}.game-table.table-ended :is(#youOutcome,#replay-youOutcome){top:var(--you-outcome-top,88cqw)}.game-table.table-ended .table-outcome::before{content:'YOU';color:#143b24;font:bold 2.9cqw Georgia,serif;letter-spacing:.15cqw}.game-table.table-ended :is(#cpuOutcome,#replay-cpuOutcome)::before{content:'COMPUTER'}.game-table.table-ended .table-outcome strong{font:bold 4.5cqw Georgia,serif;color:#fff0b0;text-shadow:0 1px #6e400a,0 0 8px #ffd952;box-shadow:0 0 10px #ffe48b70}.game-table.table-ended .table-outcome span{font:bold 3.3cqw Georgia,serif;color:#0d3523;text-shadow:0 1px #ecf0b0}.game-table.table-ended .end-actions{top:var(--controls-top,128cqw)}
.card.playable,.hand>.card.playable,.held-draw .card.playable,.deck.can-draw{border-color:#fff4a1;animation:bright-card-gold 1.6s ease-in-out infinite!important}.card.playable:hover,.hand>.card.playable:hover,.deck:not(:disabled):hover{translate:none}
@keyframes bright-card-gold{0%,100%{box-shadow:0 0 0 2px #ffe175,0 0 8px 2px #fff2a9,0 0 17px 5px #ffd02bbf,0 4px 7px #17371b66}50%{box-shadow:0 0 0 3px #fff4aa,0 0 12px 4px #fff6c9,0 0 29px 9px #ffc327e6,0 4px 7px #17371b66}}
.game-table .rim-scene path{stroke:#fff3a1;stroke-width:6;filter:drop-shadow(0 0 4px #fffbe2) drop-shadow(0 0 10px #ffd22c) drop-shadow(0 0 18px #ffbc1c);opacity:0}
.game-table[data-turn=you] .rim-near-path,.game-table[data-turn=cpu] .rim-far-path{animation:bright-table-gold 1.8s ease-in-out infinite}
@keyframes bright-table-gold{0%,100%{opacity:.72}50%{opacity:1;stroke:#fffbd7;stroke-width:8}}
.hand-return{position:fixed;z-index:20;pointer-events:none;transform-origin:top left;filter:none}.hand-return img{max-width:none;object-fit:fill}
html[data-gold-glow=off] .card.playable,html[data-gold-glow=off] .hand>.card.playable,html[data-gold-glow=off] .held-draw .card.playable,html[data-gold-glow=off] .deck.can-draw{animation:none!important;box-shadow:0 0 0 2px #e7c26c!important}
@media(prefers-reduced-motion:reduce){.card.playable,.hand>.card.playable,.held-draw .card.playable,.deck.can-draw{animation:none!important;box-shadow:0 0 0 3px #fff0a3,0 0 14px 4px #ffd12dd9}.game-table[data-turn=you] .rim-near-path,.game-table[data-turn=cpu] .rim-far-path{animation:none;opacity:1}}
@keyframes bright-card-gold{0%,100%{box-shadow:0 0 0 3px #fff2a3,0 0 9px 3px #fff9d2,0 0 24px 8px #ffcc19e6,0 0 38px 12px #ffb80080}50%{box-shadow:0 0 0 4px #fff8c5,0 0 14px 5px #fffdeb,0 0 36px 12px #ffcd18,0 0 48px 16px #ffb800a6}}
/* Each seat keeps only one visible pose for an arm while a card is held. */
.game-table .rest-arm.reaching{visibility:hidden!important;opacity:0!important}
.game-table .rest-arm-left,.game-table .rest-arm-right{top:var(--rest-top,135cqw);bottom:auto;width:31.25cqw;height:27.344cqw;transform-origin:50% 50%;rotate:0deg}
.game-table .rest-arm-left{left:6.348cqw;right:auto;transform:rotate(180deg) scaleX(-1)}
.game-table .rest-arm-right{left:auto;right:6.348cqw;transform:rotate(180deg)}
.game-table .deck-count,.game-table .called-value-label{display:inline-flex;align-items:center;justify-content:center;margin:1.2cqw 0 0;padding:.65cqw 1.5cqw;border:1px solid #f9d273;border-radius:999px;background:linear-gradient(#ad3539,#7c1720);color:#fff6dc;font:bold max(12px,1.65cqw)/1.15 Arial,Helvetica,sans-serif;text-shadow:none;white-space:nowrap;box-shadow:inset 0 1px #ffb1a64a,0 2px 4px #1d351f55}
.game-table .deck-count:empty{display:none}
.game-table .deck-hint,.game-table.table-ended .deck-hint,.game-table .legal-guide>span:not(.called-value-label){display:none}
.game-table .called-value-label{margin:0 0 1.2cqw;font-size:max(11px,1.65cqw)!important}
.table-footer,.table-footer .text-link{font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:1.5}
/* Full-length native tuxedo sleeves continue beyond the lower table edge. */
.game-table .rest-arm-left,.game-table .rest-arm-right{height:48.828cqw;overflow:visible}
.game-table .rest-arm-left img,.game-table .rest-arm-right img{display:block;width:100%;height:100%;object-fit:fill;filter:none;image-rendering:auto}

/* Blue action plaques retain the approved polished gold rim. */
.game-table .deck-zone>.pile-label,.game-table .legal-guide>.pile-label{background:linear-gradient(160deg,#2378c7,#063a7c) padding-box,linear-gradient(120deg,#7c4c0d,#fff3b1 22%,#d49a25 44%,#fff5bd 66%,#a66a14) border-box;color:#fff3cf;position:relative;z-index:2;box-shadow:inset 0 1px 2px #a7deff88,0 2px 6px #062d5877}
.game-table .joker-keep-button{display:block;margin:1.2cqw auto 0;min-height:30px;padding:.5cqw 3cqw;font:bold max(13px,2.2cqw)/1.2 Georgia,serif}
.game-table .joker-keep-button[hidden]{display:none}
.look-page .look-header{justify-content:flex-end}

/* Keep each drink beside its own player, clear of the card rows. */
.game-table .drink-near{left:5cqw;top:calc(var(--rest-top,138cqw) - 10cqw);width:14cqw}

/* Give the pug its own space alongside the legal-rank guide. */
.game-table .table-center,.game-table.table-ended .table-center{left:27.5cqw}
.game-table .table-pug{left:67cqw;top:calc(var(--pile-top,53cqw) + 8cqw);width:32cqw;image-rendering:auto}

/* UI controls may resize the table without dragging the viewport mid-reach. */
html,body,.shell,.game-table{overflow-anchor:none}

/* Mirrored grips keep each pickup on its own side of the table. */
.opponent-grip .grip-hand{left:51%;scale:-1 1;rotate:180deg}
.opponent-grip.left-grip .grip-hand{left:-100%;scale:1 1;rotate:180deg}

/* The free side holds Joker controls; neither seat shifts when they open. */
.game-table .joker-panel{left:var(--joker-left,3cqw);width:60cqw}


/* Decoded image artwork prevents the first Joker reveal from flashing blank. */
.joker-card{overflow:visible}
.joker-card>img.joker-face{display:block;position:absolute;inset:-5.5% -6%;width:112%;height:113%;max-width:none;object-fit:fill;background:none;border-radius:7px;clip-path:inset(4.9% 5.35% round 7px);pointer-events:none}
.joker-energy{position:absolute;inset:-5%;width:110%;height:110%;overflow:visible;pointer-events:none;opacity:0;z-index:3;filter:drop-shadow(0 0 3px #71dcff) drop-shadow(0 0 6px #e6fcff)}
.joker-energy path{fill:none;stroke:#d6faff;stroke-width:1.3;stroke-dasharray:19 4 7 3;stroke-linejoin:round;stroke-linecap:round}
.joker-electric .joker-energy{animation:joker-current .8s linear 1}
@keyframes joker-current{0%{opacity:.8;stroke-dashoffset:0}80%{opacity:1}100%{opacity:0;stroke-dashoffset:-120}}
.game-table .rest-arm.reacting{visibility:hidden!important;opacity:0!important}
.reaction-fist{position:absolute;z-index:7;pointer-events:none;transform-origin:50% 55%}
.reaction-fist img{display:block;width:100%;height:100%;max-width:none;object-fit:fill}
.reaction-fist::after{content:'';position:absolute;left:16%;top:30%;width:68%;height:15%;border:2px solid #ffdf7c;border-radius:50%;opacity:0;animation:fist-impact .4s linear 1;pointer-events:none}
@keyframes fist-impact{0%,9%{opacity:0;scale:.7}10%{opacity:.9;scale:1}100%{opacity:0;scale:1.45}}
@media(prefers-reduced-motion:reduce){.joker-electric .joker-energy{animation:none;opacity:.35}.reaction-fist::after{animation:none}}

.reaction-fist:not([data-player="0"])::after{top:55%}

/* The already-decoded artwork also backs every newly inserted Joker image. */
.joker-card{background:#fff4db url('table/joker-v1.png') center/112% 113% no-repeat}


/* The hand, cuff, and sleeve travel together in one photographic sprite. */
/* Keep the offscreen sleeve and its return motion out of page overflow. */
.arm-flight-clip{position:fixed;inset:0;z-index:20;pointer-events:none;contain:paint;overflow:hidden}
.grip-hand{aspect-ratio:254/580}
.grip-art{position:absolute;left:-17%;top:-11%;width:150%!important;height:190%!important;max-width:none;display:block;object-fit:fill;clip-path:inset(0 0 55% 0)}
/* Stretch the fabric below the cuff, with a small overlap at the join. */
.grip-art.grip-sleeve{clip-path:inset(45% 0 0);transform-origin:50% 45%;transform:scaleY(3);z-index:-1}
.grip-hand,.hand-return>div{isolation:isolate}
.grip-hand .grip-sleeve,.hand-return .grip-sleeve{clip-path:inset(44.8% 0 0)}

/* A light-blue halo starts on the discard pile at Joker contact. */
:is(#topCard,#replay-topCard).joker-impact{animation:joker-landing-glow .85s ease-out}
@keyframes joker-landing-glow{
 0%,22%{filter:drop-shadow(0 0 3px #e8faff) drop-shadow(0 0 9px #9de4ff) drop-shadow(0 0 17px #63caff)}
 100%{filter:drop-shadow(0 0 0 transparent)}
}
@media(prefers-reduced-motion:reduce){
 :is(#topCard,#replay-topCard).joker-impact{animation:none;filter:drop-shadow(0 0 7px #9de4ff)}
}

/* Extra cards scroll inside the same two-row hand area during play. */
.game-table .hand.scrolling-hand{height:40cqw;overflow-x:hidden;overflow-y:auto;align-content:flex-start;overscroll-behavior-y:contain;scrollbar-width:none}

.game-table.table-ended .table-outcome.blocked strong {
  inline-size: 32cqw;
  block-size: 8.2cqw;
  padding: 0;
  border: 0;
  background: url('interface/block-logo.png') center 40% / 100% auto no-repeat;
  color: transparent;
  text-shadow: none;
  box-shadow: none;
}

.ranks-guide-link {
  display: block;
  width: fit-content;
  margin: 12px auto 0;
  padding: 7px 14px;
  border: 1px solid #d6b465;
  border-radius: 999px;
  background: #103f2b;
  color: #ffe695;
  font: bold max(12px, 2.1cqw) Georgia,serif;
  text-align: center;
  text-decoration: none;
}
.dashboard .dashboard-ranks-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: auto;
  min-height: 52px;
  margin: 0 15px 16px;
  padding: 8px 18px;
  border: 2px solid #efcd7c;
  border-radius: 14px;
  background: linear-gradient(160deg, #174b36, #082c20);
  color: #fff1c5;
  font-size: 19px;
  line-height: 1.2;
  text-align: start;
}

.game-table.table-ended .table-outcome.winner strong {
  border-color: #ffe496;
  box-shadow: 0 0 0 1px #b88a34, inset 0 0 7px #ffe49642;
}
html:not([data-gold-glow=off]) .game-table.table-ended .table-outcome.winner strong {
  box-shadow: 0 0 0 1px #fff0ad, 0 0 10px 3px #ffd65e, 0 0 22px 5px #e6a827a8, inset 0 0 9px #ffe49670;
}

#liveBonus {
  position: fixed;
  z-index: 30;
  top: max(76px, calc(env(safe-area-inset-top) + 56px));
  left: 50%;
  transform: translateX(-50%);
  width: min(78vw, 320px);
  padding: 4px 6px 7px;
  border: 1px solid #ddbb6e;
  border-radius: 12px;
  background: #082f23;
  color: #fff1c5;
  font: bold 13px/1.35 Georgia,serif;
  text-align: center;
  pointer-events: none;
  box-shadow: 0 5px 18px #05190dcc;
}
#liveBonus[hidden],#bonusRecap[hidden] { display: none; }
.bonus-art {
  aspect-ratio: 480 / 183;
  background: url('guide/live.webp') no-repeat;
  background-size: 226.25% 791.26%;
}
.bonus-art.smart-choice { background-position: 8.25% 17.07%; }
.bonus-art.joker-lock { background-position: 91.42% 17.07%; }
.bonus-art.clean-sweep { background-position: 8.25% 54.62%; }
.bonus-art.block-finish { background-position: 91.42% 54.62%; }
.bonus-art.sacrifice-goat,
.bonus-art.sacrifice-goat-hold,
.bonus-art.sacrifice-goat-pending {
  background-image: url('guide/sacrifice-goat.webp');
  background-size: 100% auto;
  background-position: center 23%;
}
#bonusRecap { color: #103621; margin-top: 18px; }
#bonusRecap h3 { text-align: center; }
#bonusScores { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
#bonusScores section { padding: 10px; border: 1px solid #b68d3c; border-radius: 10px; background: #fff4db; }
#bonusScores h4 { margin: 0; }
#bonusScores ul { padding-left: 18px; }
.game-table.table-ended .end-actions { left: 10cqw; width: 80cqw; }
.bonus-timer-track { height: 3px; margin-top: 6px; border-radius: 4px; background: #fff1c530; }
#liveBonusTimer { height: 100%; border-radius: inherit; background: #e9bc59; transform-origin: left; }
@media (prefers-reduced-motion: reduce) { .bonus-timer-track { visibility: hidden; } }

.game-table.table-ended.result-visible .turn-status { display: flex; }
.game-table.table-ended.result-visible[data-turn=cpu] .turn-status strong {
  background: linear-gradient(#ac2838,#741522) padding-box,var(--line) border-box;
}

.intro { flex-wrap: wrap; }

.legal-guide #legalGuideLabel.no-plays { white-space: normal; }
.legal-guide .joker-option { width: auto; padding: 0 .8cqw; font-size: max(11px, 2.3cqw); }

/* Keep gold inside the card so a nearby or clipped card cannot appear playable. */
html:not([data-gold-glow=off]) .game-table .hand > .card.playable:not(:disabled) {
  animation: playable-hand-gold 1.6s ease-in-out infinite !important;
}
@keyframes playable-hand-gold {
  0%, 100% { box-shadow: inset 0 0 0 2px #f6be32, inset 0 0 14px 4px #ffcc57b3; }
  50% { box-shadow: inset 0 0 0 3px #f9c53c, inset 0 0 22px 7px #ffd35ee6; }
}
@media (prefers-reduced-motion: reduce) {
  html:not([data-gold-glow=off]) .game-table .hand > .card.playable:not(:disabled) {
    animation: none !important;
    box-shadow: inset 0 0 0 3px #f9c53c, inset 0 0 18px 5px #ffd35ee6;
  }
}

.look-page .difficulty-settings { flex-wrap: wrap; }
.difficulty-setting-button {
  margin-left: auto;
  min-height: 42px;
  padding: 7px 12px;
  border: 1px solid #dfbc65;
  border-radius: 999px;
  background: linear-gradient(#174e37, #082e21);
  color: #fff1c5;
  font: bold clamp(13px, 3.6vw, 16px) Georgia, serif;
  cursor: pointer;
}

/* The first two rows of the rank guide sheet hold the six progression badges. */
.dashboard-player > .player-rank-badge {
  flex: none;
  width: clamp(100px, 32vw, 176px);
  height: auto;
  aspect-ratio: 164 / 148;
  border: 0;
  border-radius: 0;
  background: url('guide/ranks.webp') var(--badge-column, 4%) var(--badge-row, 0%) / 317.07% 299.85% no-repeat;
}
.player-rank-badge:is([data-rank=contender], [data-rank=wizard]) { --badge-column: 50%; }
.player-rank-badge:is([data-rank=gatekeeper], [data-rank=legend]) { --badge-column: 97%; }
.player-rank-badge:is([data-rank=blockmaster], [data-rank=wizard], [data-rank=legend]) { --badge-row: 49%; }
.look-tab-icon { width: .7em; height: 1em; margin-right: .2em; vertical-align: -.12em; }

.player-rank { flex: 1; min-width: 0; padding-block: 7px; }
.player-rank-heading { display: flex; align-items: center; flex-wrap: wrap; gap: 7px 12px; }
.player-rank-heading b {
  padding: 4px 11px;
  border: 1px solid #c69a42;
  border-radius: 999px;
  background: #10422e;
  color: #fff0bd;
  font: bold clamp(13px, 3.4vw, 19px) Georgia, serif;
}
.player-rank p { margin: 4px 0; font-size: clamp(12px, 3.1vw, 15px); }
.player-rank progress { display: block; width: 100%; max-width: 20rem; height: 8px; accent-color: #976811; }

.friend-status {
  margin: 0 0 .65rem;
  padding: .65rem;
  border: 1px solid #caac61;
  border-radius: .8rem;
  color: #fff1c5;
  background: #113d2c;
  text-align: center;
}
.friend-status p { margin: 0; font: bold 1rem Georgia, serif; }
#friendInviteActions:not([hidden]) { display: flex; gap: .5rem; justify-content: center; margin-top: .5rem; }
#friendInvite { width: min(62%, 22rem); min-width: 0; font: inherit; color: #153729; background: #f5e8c2; border-radius: .3rem; }
#friendDraw:not([hidden]) { display: block; }
.game-table.friend-match #friendDraw {
  position: absolute;
  z-index: 7;
  left: 43.15cqw;
  top: 75.5cqw;
}
.game-table.friend-match #friendDraw .card {
  --card-w: 13.7cqw;
  --card-h: 18.4cqw;
}
.game-table.friend-match.table-ended :is(#cpuOutcome,#replay-cpuOutcome)::before { content: 'FRIEND'; }

.solo-table-controls {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: .5rem;
  margin: 0 0 .55rem;
  color: #fff1c5;
  font: bold .82rem Georgia, serif;
}
.solo-table-controls span { margin-right: auto; }
.solo-table-controls select {
  min-height: 40px;
  padding: .35rem .55rem;
  border: 1px solid #d2ad58;
  border-radius: .6rem;
  color: inherit;
  background: #103d2e;
  font: inherit;
}
.game-table.three-player .opponent { display: none; }
.opponent-seats {
  position: absolute;
  z-index: 3;
  inset: 29cqw 10cqw auto;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 3cqw;
  align-items: start;
}
.opponent-seat {
  padding: 1cqw .5cqw;
  border: .2cqw solid #e2be67;
  border-radius: 1.2cqw;
  background: #103d2e;
  color: #fff0be;
  text-align: center;
}
.opponent-seat.active,.opponent-seat.winner {
  border-color: #fff0a7;
  box-shadow: 0 0 1.35cqw #ffdd72;
}
.opponent-seat.blocked { background: #681d26; }
.opponent-seat h2 { margin: 0; font: bold max(12px, 2.9cqw)/1.2 Georgia, serif; }
.opponent-seat p { margin: .3cqw 0 .75cqw; font: bold max(10px, 2.15cqw)/1.2 Georgia, serif; }
.opponent-seat-cards {
  display: grid;
  grid-template-columns: repeat(4, 7.6cqw);
  gap: .6cqw;
  justify-content: center;
}
.opponent-seat-cards .card { --card-w: 7.6cqw; --card-h: 10.4cqw; }
.game-details .result-scores.three-scores { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 540px) {
  .game-details .result-scores.three-scores { grid-template-columns: 1fr; }
}

.profile-page { min-height: 100vh; }
.profile-shell {
  width: min(100% - 20px, 620px);
  margin: 10px auto;
  padding: clamp(12px, 3vw, 26px);
  border: 3px solid #caa653;
  border-radius: 22px;
}
.profile-shell .screen-title { margin: 12px 0 18px; }
.profile-shell .screen-title h1 { margin: 0; text-align: center; font: bold clamp(28px, 7vw, 48px) Georgia, serif; }
.profile-shell .dashboard-player { margin-inline: 0; }
.profile-shell #profileName { overflow-wrap: anywhere; }
.profile-back, .profile-guide, .profile-sign-in { color: #103d2e; font: bold 1rem Georgia, serif; }
.profile-section { margin-block: 14px 0; }
.profile-section h2 { margin: 0 0 4px; font: bold clamp(22px, 5vw, 29px) Georgia, serif; }
.profile-section label { display: block; margin: 12px 0 5px; font-weight: bold; }
.profile-section :is(input, select) {
  min-width: 0;
  min-height: 42px;
  padding: 6px 9px;
  border: 1px solid #9d7a30;
  border-radius: 6px;
  background: #fff8e3;
  color: #103d2e;
  font: inherit;
}
.profile-form-row { display: flex; flex-wrap: wrap; gap: 8px; }
.profile-form-row input { flex: 1 1 140px; }
.profile-form-row .quiet { font-size: 15px; }
.profile-section [role=status]:not(:empty), #profileTitleNote { margin-top: 8px; font-size: 14px; }
.profile-record {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 4px;
  margin: 14px 0;
  text-align: center;
}
.profile-record div { padding: 7px 2px; border: 1px solid #b99955; border-radius: 8px; }
.profile-record dt { font-size: clamp(11px, 3.1vw, 15px); }
.profile-record dd { margin: 2px 0 0; font: bold clamp(17px, 4.8vw, 26px) Georgia, serif; }
.profile-guide, .profile-sign-in { display: inline-block; margin-top: 10px; }

.profile-club-link { margin-inline: 0; }
.club-button, .club-code { margin-top: 10px; }
#friendCode { font-family: ui-monospace, monospace; font-size: 14px; }
#friendCodeHelp { margin-top: 6px; font-size: 14px; }
.club-list { display: grid; gap: 7px; padding: 0; margin: 8px 0 4px; list-style: none; }
.club-list li { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; padding: 5px 0; }
.club-list li + li { border-top: 1px solid #b99955; }
.club-list strong { flex: 1 1 90px; overflow-wrap: anywhere; }
.club-list .quiet { font-size: 13px; }

.recap-replay {
  margin: 16px auto;
  max-width: 520px;
  padding: 12px;
  border: 1px solid #e4bf6c;
  border-radius: 14px;
  background: #103d2c;
  color: #fff0c5;
  text-align: center;
}

.replay-dialog {
  width: min(700px, 100vw);
  max-width: 100vw;
  max-height: 100dvh;
  padding: 0 0 8px;
  border: 1px solid #e4bf6c;
  background: #092d22;
  color: #fff0c5;
  overscroll-behavior: contain;
}
.replay-dialog::backdrop { background: #051c17db; }
.replay-toolbar {
  position: sticky;
  z-index: 10;
  top: 0;
  padding: 9px 10px;
  background: #103d2c;
  border-bottom: 1px solid #d1ab65;
}
.replay-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 8px 12px;
}
.replay-controls .primary, .replay-controls .quiet { min-height: 38px; }
.replay-toolbar h2 { margin: 0; font: bold clamp(18px, 5vw, 27px) Georgia, serif; }
.replay-toolbar .replay-controls + .replay-controls { margin-top: 7px; font-size: 14px; }
.replay-toolbar select { background: #0b3225; color: #fff0c5; border: 1px solid #d1ab65; border-radius: 6px; padding: 4px; }
#replayProgress { display: block; width: 100%; height: 7px; margin: 8px 0 0; accent-color: #eebf59; }
#replayAction { min-height: 2.5em; margin: 7px 0 0; display: grid; place-items: center; text-align: center; font-size: 14px; }
#replayBoard .watch-table { width: min(100%, 600px, max(300px, calc((100dvh - 150px) * .56))); margin: 0 auto; }
.watch-table .replay-draw-flight { position: absolute; z-index: 20; pointer-events: none; }
.watch-table #replay-topCard { position: relative; z-index: 3; }
.watch-table .hand .card:disabled { opacity: 1; }

/* Color the felt inside the original photographed rim. Both seats share this surface. */
[data-table-felt] { --felt-color: #80b967; --felt-brightness: 1; --felt-ink: #143b24; }
[data-table-felt=purple] { --felt-color: #9664ca; --felt-brightness: .76; --felt-ink: #fff0cf; }
[data-table-felt=pink] { --felt-color: #e28eac; --felt-brightness: 1.14; --felt-ink: #381d29; }
[data-table-felt=red] { --felt-color: #b52c53; --felt-brightness: .63; --felt-ink: #fff0cf; }
[data-table-felt=blue] { --felt-color: #3d72d6; --felt-brightness: .79; --felt-ink: #fff0cf; }
[data-table-felt=gold] { --felt-color: #dfb66f; --felt-brightness: 1.23; --felt-ink: #392809; }
[data-table-felt=white] { --felt-color: #e9e2d2; --felt-brightness: 1.51; --felt-ink: #343028; }
[data-table-felt=black] { --felt-color: #39383e; --felt-brightness: .43; --felt-ink: #fff0cf; }
[data-table-felt=orange] { --felt-color: #e97835; --felt-brightness: .9; --felt-ink: #331d0e; }

.felt-layer { display: none; }
html[data-table-felt]:not([data-table-felt=jade]) .game-table > .felt-layer,
.felt-preview[data-table-felt]:not([data-table-felt=jade]) > .felt-layer {
  display: block;
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background: linear-gradient(var(--felt-color), var(--felt-color)), url('table/jade-scene-v2.png') center / 100% 100% no-repeat;
  background-blend-mode: color;
  filter: brightness(var(--felt-brightness));
  clip-path: polygon(
    36.3% 8.43%, 63.7% 8.43%, 85.05% 11.7%, 90.5% 15.1%, 95.65% 20.7%,
    98.25% 32.55%, 94.55% 35.35%, 95.6% 40.15%, 98.85% 42.35%, 100% 47.65%,
    100% 78.35%, 84.8% 90.8%, 71.85% 92.85%, 28.15% 92.85%, 15.2% 90.8%,
    0 78.35%, 0 47.65%, 1.15% 42.35%, 4.4% 40.15%, 5.45% 35.35%, 1.75% 32.55%,
    4.35% 20.7%, 9.5% 15.1%, 14.95% 11.7%
  );
}
html[data-table-felt]:not([data-table-felt=jade]) .game-table.table-ended .table-outcome span,
html[data-table-felt]:not([data-table-felt=jade]) .game-table.table-ended .table-outcome::before {
  color: var(--felt-ink);
  text-shadow: none;
}
