:root{--ink:#f8fafc;--muted:#cbd5e1;--felt:#075b53;--felt-dark:#043c3a;--gold:#f6c85f;--green:#31d6a0;--focus:#ffe27a;--red:#c91f3b;--card-w:clamp(48px,6vw,76px);--card-h:calc(var(--card-w)*1.42)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 50% 0,#263c67,#080e1c 68%);color:var(--ink);font-family:Nunito,system-ui,sans-serif}.skip-link{position:fixed;z-index:999;left:1rem;top:-5rem;background:#fff;color:#111;padding:.75rem 1rem;border-radius:.5rem}.skip-link:focus{top:1rem}.gin-shell{max-width:1240px;margin:auto;padding:.75rem 1rem 1.25rem}.scoreboard{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;max-width:1060px;margin:0 auto .65rem}.player-score{display:flex;align-items:center;gap:.65rem;background:#08101dbd;border:1px solid #ffffff21;border-radius:16px;padding:.55rem .8rem}.player-score>span:first-child,.player-score>span:last-child{font-size:1.55rem}.player-score span:nth-child(2){display:flex;flex-direction:column}.player-score small{color:var(--muted)}.player-score>b{margin-left:auto;font-size:1.65rem;color:var(--gold)}.player-score.opponent{justify-content:flex-end}.player-score.opponent>b{margin:0 auto 0 0}.match-goal{text-align:center}.match-goal span{display:block;color:var(--gold);font-size:.78rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.match-goal strong{display:block;font-size:1.15rem}.match-goal small{color:var(--muted)}
.game-table{position:relative;isolation:isolate;height:calc(100vh - 205px);min-height:520px;max-height:680px;padding:1rem 2rem 1.3rem;border:12px solid #6f4123;border-radius:72px;overflow:hidden;background:radial-gradient(ellipse at center,#10776c 0,var(--felt) 53%,var(--felt-dark) 100%);box-shadow:inset 0 0 0 4px #c58b4d,inset 0 0 70px #001b1a,0 22px 55px #020713}.game-table:before{content:"";position:absolute;inset:7px;border:1px solid #ebcd89a6;border-radius:54px;pointer-events:none}.felt-glow{position:absolute;z-index:-1;inset:0;background:radial-gradient(circle at 50% 45%,#ffffff1a,transparent 42%)}.opponent-zone{text-align:center}.seat-tag{display:inline-flex;align-items:center;gap:.35rem;background:#0b1724;border:1px solid #ffffff2e;border-radius:999px;padding:.35rem .8rem;font-weight:900}.thinking{color:var(--gold);font-size:.8rem}.opponent-hand{height:70px;display:flex;justify-content:center;padding-top:.45rem}.opponent-card{width:38px;height:54px;margin-left:-17px;border:2px solid #f2e7cf;border-radius:6px;background:repeating-linear-gradient(135deg,#1d3049 0 7px,#0e1c31 7px 14px);box-shadow:0 4px 10px #0006}.opponent-card:first-child{margin-left:0}
.turn-banner{position:absolute;z-index:3;left:50%;top:118px;transform:translateX(-50%);width:min(680px,72%);display:flex;align-items:center;justify-content:center;gap:.65rem;padding:.6rem .8rem;background:#f8fafc;color:#12213a;border-radius:14px;box-shadow:0 7px 20px #0004}.turn-banner p{margin:0;font-weight:900;text-align:center}.turn-dot{width:10px;height:10px;border-radius:50%;background:#16a36a;box-shadow:0 0 0 5px #16a36a29}.icon-button{border:0;background:#e8eef7;border-radius:50%;width:36px;height:36px;font-size:1rem;cursor:pointer;flex:none}.table-center{position:absolute;top:205px;left:50%;transform:translateX(-50%);display:grid;grid-template-columns:auto 140px auto;align-items:center;gap:2rem}.pile-button{border:0;background:transparent;color:#fff;font:inherit;cursor:pointer;padding:.3rem;border-radius:12px}.pile-button:disabled{cursor:not-allowed;opacity:.58}.pile-button:not(:disabled):hover .playing-card,.pile-button:not(:disabled):focus-visible .playing-card{transform:translateY(-8px);box-shadow:0 0 0 4px var(--gold),0 12px 20px #0006}.pile-label{display:block;margin-top:.45rem;font-weight:900}.pile-label b{display:inline-grid;place-items:center;min-width:24px;height:24px;margin-left:.25rem;background:#fff;color:#102035;border-radius:999px}.table-logo{text-align:center;opacity:.22}.table-logo span{display:block;font:italic 700 5rem Georgia,serif}.table-logo small{font-weight:900;letter-spacing:.25em}
.playing-card{position:relative;display:inline-block;width:var(--card-w);height:var(--card-h);border-radius:11px;background:#fff;color:#111;border:3px solid #fff;box-shadow:0 7px 15px #0006;transition:.16s}.playing-card.red{color:var(--red)}.playing-card.card-back{background:repeating-linear-gradient(135deg,#243c5c 0 8px,#12243e 8px 16px);border-color:#e9dcc0}.back-mark{position:absolute;inset:10%;display:grid;place-items:center;border:1px solid #ffffff8c;font:italic 800 1.6rem Georgia;color:#e7c678}.card-corner{position:absolute;top:4px;left:6px;font-weight:1000;line-height:.95;text-align:center}.card-suit{position:absolute;inset:0;display:grid;place-items:center;font-size:clamp(1.5rem,3vw,2.3rem)}
.player-zone{position:absolute;left:2rem;right:2rem;bottom:1rem}.hand-heading{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.75rem}.hand-heading h1{font-size:1rem;margin:0;text-align:left}.deadwood-meter{display:flex;align-items:center;gap:.45rem;background:#081f22;border:1px solid #ffffff2e;border-radius:999px;padding:.35rem .7rem}.deadwood-meter span{font-size:.8rem}.deadwood-meter strong{display:grid;place-items:center;background:var(--gold);color:#1d2430;border-radius:50%;width:31px;height:31px}.hand-tools{display:flex;gap:.4rem;justify-content:flex-end}.small-button,.dock-button{border:1px solid #ffffff40;background:#04161dba;color:#fff;border-radius:10px;padding:.52rem .7rem;font-weight:900;cursor:pointer}.player-hand{display:flex;justify-content:center;align-items:end;min-height:125px;padding:.75rem .25rem .3rem}.hand-card{position:relative;width:var(--card-w);height:var(--card-h);flex:none;margin-left:clamp(-16px,-1vw,-6px);padding:0;border:3px solid #fff;border-radius:11px;background:#fff;color:#101418;box-shadow:0 7px 15px #0006;cursor:pointer;transition:.14s}.hand-card:first-child{margin-left:0}.hand-card.red{color:var(--red)}.hand-card.meld{border-color:var(--green);box-shadow:0 0 0 2px #0b765b,0 7px 15px #0006}.hand-card.selected{transform:translateY(-16px);box-shadow:0 0 0 4px var(--gold),0 14px 22px #0007}.hand-card:disabled{cursor:default}.hand-card:not(:disabled):hover{transform:translateY(-10px)}.hand-card .card-corner{font-size:clamp(.8rem,1.35vw,1.05rem)}.hand-card .card-suit{font-size:clamp(1.35rem,2.6vw,2rem)}.meld-badge{position:absolute;right:3px;bottom:3px;width:18px;height:18px;display:grid;place-items:center;background:#08785c;color:#fff;border-radius:50%;font-size:.65rem}.meld-key{text-align:center;margin:.2rem 0;color:#e6f4f1;font-size:.75rem}.key-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 .25rem 0 .65rem}.key-dot:first-child{margin-left:0}.meld-dot{background:var(--green)}.selected-dot{background:var(--gold)}
.action-dock{display:flex;justify-content:center;gap:.6rem;flex-wrap:wrap;padding:.75rem 0}.primary-action{border:0;border-radius:12px;padding:.72rem 1.15rem;background:linear-gradient(#37d49f,#11936e);color:#061c16;font:900 1rem Nunito,system-ui;box-shadow:0 5px 0 #075941;cursor:pointer}.primary-action.secondary-action{background:linear-gradient(#f9d978,#e8a93b);box-shadow:0 5px 0 #986318}.primary-action:disabled{filter:grayscale(1);opacity:.45;cursor:not-allowed;box-shadow:none}.dock-button{background:#17243a}.icon-button:focus-visible,.pile-button:focus-visible,.hand-card:focus-visible,.small-button:focus-visible,.dock-button:focus-visible,.primary-action:focus-visible,.dialog-close:focus-visible,select:focus-visible,input:focus-visible{outline:4px solid var(--focus);outline-offset:3px}
.game-dialog{width:min(620px,calc(100% - 2rem));border:1px solid #d9e2ee;border-radius:24px;padding:0;color:#132039;box-shadow:0 28px 80px #0008}.game-dialog::backdrop{background:#030812c7;backdrop-filter:blur(4px)}.game-dialog form,.result-dialog>div{position:relative;padding:1.4rem 1.5rem 1.6rem}.game-dialog h2{margin:.15rem 0 1rem;font-size:1.7rem}.dialog-close{position:absolute;right:.8rem;top:.7rem;border:0;background:#e8edf4;border-radius:50%;width:40px;height:40px;font-size:1.6rem;cursor:pointer}.eyebrow{margin:0;color:#08785c;text-transform:uppercase;letter-spacing:.12em;font-weight:1000;font-size:.75rem}.rule-steps{padding-left:1.35rem;line-height:1.55}.rule-steps li{margin:.55rem 0}.rule-example{display:flex;align-items:center;justify-content:center;gap:.4rem;background:#e9f7f2;padding:.8rem;border-radius:12px}.mini-card{background:#fff;color:#c41e3a;border:1px solid #bbc7d3;border-radius:5px;padding:.45rem}.dialog-done{display:block;margin:1rem auto 0}.compact-dialog label{display:flex;flex-direction:column;gap:.35rem;margin:.9rem 0;font-weight:900}.compact-dialog select{font:inherit;padding:.6rem;border:1px solid #9dadbf;border-radius:9px}.compact-dialog .toggle-row{flex-direction:row;justify-content:space-between;align-items:center}.toggle-row input{width:24px;height:24px}.result-dialog{text-align:center}.result-icon{font-size:3.5rem}.score-change{display:flex;justify-content:center;gap:1rem;margin:1rem}.score-change span{background:#e9eef5;padding:.7rem 1rem;border-radius:10px}.result-dialog .primary-action{display:block;margin:0 auto 1rem}.text-link{color:#174d89;font-weight:900}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
body.high-contrast{--felt:#004e46;--felt-dark:#002c28;--green:#5fffc9;--gold:#ffe66f}body.large-cards{--card-w:clamp(55px,7vw,88px)}body.reduce-motion *{animation:none!important;transition:none!important}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media(max-width:700px){.gin-shell{padding:.45rem}.scoreboard{grid-template-columns:1fr 1fr;gap:.4rem}.match-goal{grid-column:1/-1;grid-row:1}.match-goal strong{display:inline;margin-right:.5rem}.player-score{padding:.4rem .55rem}.player-score>b{font-size:1.3rem}.game-table{height:auto;min-height:620px;max-height:none;border-width:7px;border-radius:38px;padding:.5rem}.game-table:before{border-radius:29px}.turn-banner{top:112px;width:92%;font-size:.86rem}.table-center{top:195px;grid-template-columns:auto 70px auto;gap:.55rem}.table-logo span{font-size:3rem}.table-logo small{display:none}.player-zone{left:.5rem;right:.5rem;bottom:.65rem}.hand-heading{grid-template-columns:1fr auto}.hand-tools{grid-column:1/-1;justify-content:center}.player-hand{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-items:center;gap:.35rem;min-height:195px;padding:.5rem}.hand-card,.hand-card:first-child{width:100%;height:78px;margin:0}.hand-card.selected{transform:translateY(-6px)}.meld-key{display:none}.action-dock{position:sticky;bottom:0;z-index:5;background:linear-gradient(transparent,#080e1c 22%);padding:1.25rem .25rem .4rem}.dock-button,.primary-action{min-height:48px}.action-dock .dock-button{font-size:.82rem}.opponent-hand{height:62px}.opponent-card{height:48px;width:34px}.player-score small{font-size:.7rem}}
@media(max-width:380px){.game-table{min-height:610px}.turn-banner{top:105px}.table-center{top:185px}.player-hand{grid-template-columns:repeat(5,minmax(0,1fr))}.hand-card,.hand-card:first-child{height:71px}.player-zone{bottom:.35rem}.small-button{font-size:.75rem;padding:.42rem}.action-dock{gap:.35rem}.action-dock .dock-button{padding:.5rem}.scoreboard{font-size:.9rem}}

/* Final layout guards: the shared arcade bar is fixed above the game. */
.gin-shell{margin-top:67px}
.pile-label{width:100px;margin:.45rem auto 0;text-align:center}
@media(max-width:700px){.gin-shell{margin-top:61px}.pile-label{width:82px}.action-dock{position:static}}
.gin-shell{margin-top:0}
@media(max-width:700px){.gin-shell{margin-top:61px}}
