/* Pinochle: a navy card-room table with brass trim. Cards come from gin.css; sizes here use --cw. */
.pin-table{--brass:#e9c37a;--us:#f2c97f;--them:#8fe0c8;--mint:#8fe0bf;--cream:#fbf3e2;--ink:#0d1a2c;position:relative;isolation:isolate;max-width:1020px;margin:auto;padding:18px 22px 16px;color:#f3eee2;background:radial-gradient(ellipse 95% 55% at 50% 0%,#24395b,#14223a 62%,#0c1626);border:1px solid #2c4166;border-radius:24px;box-shadow:0 20px 60px #0a142640;overflow:hidden}
.pin-table *{box-sizing:border-box}.pin-table p{margin:0}.pin-table button{font:inherit;cursor:pointer}.pin-table .gin-card:disabled{opacity:1}
.pin-table .gin-card:focus-visible,.pin-table button:focus-visible,.pin-table summary:focus-visible{outline:3px solid #ffe4a1;outline-offset:3px;z-index:6}
/* Scoreboard */
.pin-hud{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:12px;align-items:stretch}
.pin-team{position:relative;display:grid;grid-template-columns:auto 1fr;align-content:start;column-gap:8px;row-gap:3px;min-width:0;padding:11px 16px 12px;border-radius:16px;background:#ffffff0a;border:1px solid #ffffff17}
.pin-team.is-us{background:linear-gradient(160deg,#f2c97f1f,#f2c97f08);border-color:#f2c97f55}.pin-team.is-them{background:linear-gradient(160deg,#8fe0c81a,#8fe0c806);border-color:#8fe0c840}
.pin-team-top{grid-column:1/-1;display:flex;gap:8px;align-items:center;min-width:0}.pin-team-name{font-size:14px;color:#e8e1cf;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pin-team>strong{font:800 36px/1 Bricolage,DM,system-ui,sans-serif;color:#ffe2b0;font-variant-numeric:tabular-nums;align-self:end}.pin-team.is-them>strong{color:#c9f5e8}.pin-of{align-self:end;padding-bottom:4px;font-size:13px;color:#c9c2ae}
.pin-progress{grid-column:1/-1;display:block;height:6px;margin:5px 0 3px;border-radius:9px;background:#ffffff14;overflow:hidden}.pin-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#c99a3c,var(--us));transition:width 1s cubic-bezier(.3,.7,.3,1)}.pin-team.is-them .pin-progress i{background:linear-gradient(90deg,#3c9c83,var(--them))}
.pin-hand-line{grid-column:1/-1;position:relative;font-size:14px;color:#e2dccb}.pin-hand-line b{font-variant-numeric:tabular-nums;color:#fff}.pin-need{color:#ffd9a3;font-weight:700}.pin-need.is-made{color:var(--mint)}
.pin-makers{position:absolute;top:-9px;right:10px;padding:4px 9px;border-radius:999px;font:800 11px/1.1 DM,system-ui,sans-serif;font-style:normal;letter-spacing:.05em;text-transform:uppercase;background:var(--brass);color:#2a1d08;box-shadow:0 3px 8px #0006}
.pin-trump{display:grid;justify-items:center;align-content:center;gap:2px;min-width:128px;padding:8px 12px;border-radius:16px;background:#0a1424c0;border:1px solid #e9c37a40;text-align:center}
.pin-trump small{font:800 10px/1 DM,system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#cdbf9b}.pin-trump b{font-size:15px;line-height:1.2}.pin-trump-by{font-size:12px;color:#d8cfb8;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pin-coin{display:grid;place-items:center;width:52px;height:52px;margin:3px 0 1px;border-radius:50%;font:700 31px/1 Georgia,serif;color:#1b2833;background:radial-gradient(circle at 35% 30%,#fffdf6,#f1e2bf 70%,#d8bf86);box-shadow:inset 0 0 0 2px #fff8,0 0 0 3px #e9c37a,0 6px 14px #0008}
.pin-trump[data-suit="1"] .pin-coin,.pin-trump[data-suit="2"] .pin-coin{color:#c42a3e}
.pin-coin.is-bid{width:auto;min-width:64px;height:44px;padding:0 10px;border-radius:12px;font:800 22px/1 Bricolage,DM,system-ui,sans-serif;color:#2a1d08;font-variant-numeric:tabular-nums}
.pin-coin.is-open{color:#e9c37a;font:800 24px/1 Bricolage,DM,system-ui,sans-serif;background:radial-gradient(circle at 35% 30%,#3b4e6e,#1d2c47);box-shadow:inset 0 0 0 2px #ffffff1c,0 0 0 2px #e9c37a66,0 6px 14px #0008}
.pin-auction.is-raised b{animation:pin-bump .5s cubic-bezier(.2,.9,.3,1.4)}
.pin-trump.is-set{border-color:#e9c37a99;box-shadow:0 0 22px #e9c37a26}.pin-trump.is-new .pin-coin{animation:pin-coin 1s cubic-bezier(.2,.9,.3,1.3)}.pin-trump.is-raised .pin-coin{animation:pin-bump .5s cubic-bezier(.2,.9,.3,1.4)}
@keyframes pin-coin{0%{scale:.3;rotate:-180deg;opacity:0}60%{scale:1.15}100%{scale:1;rotate:0deg}}@keyframes pin-bump{40%{scale:1.16}}
/* Felt */
.pin-felt{position:relative;height:364px;margin:14px 0 0;border-radius:50%/46%;background:repeating-linear-gradient(90deg,#ffffff05 0 1px,#0000 1px 4px),radial-gradient(ellipse at 50% 40%,#2f5c8f,#1f4572 55%,#132d4d);box-shadow:inset 0 0 0 7px #6f4426,inset 0 0 0 9px #3a2213,inset 0 0 0 11px #e9c37a40,inset 0 0 90px #050e1ec0}
.pin-felt::before{content:'';position:absolute;left:50%;top:50%;width:184px;height:184px;transform:translate(-50%,-50%);border-radius:50%;border:1px dashed #ffffff16;pointer-events:none}
.pin-table[data-trump] .pin-felt::after{content:'';position:absolute;left:50%;top:50%;width:160px;height:160px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,#e9c37a14,#0000 70%);pointer-events:none}
.pin-seat{position:absolute;z-index:2;display:grid;justify-items:center;gap:3px;min-width:108px;max-width:31%;padding:7px 12px 8px;border-radius:14px;background:#0b1830e0;border:1px solid #ffffff1c;font-size:14px;text-align:center;transition:border-color .3s,box-shadow .3s}
.pin-seat.is-us{border-top:3px solid var(--us)}.pin-seat.is-them{border-top:3px solid var(--them)}
.pin-seat-head{display:flex;align-items:center;gap:6px;max-width:100%}.pin-seat-head b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.pin-dealer{display:grid;place-items:center;flex:none;width:20px;height:20px;border-radius:50%;background:#fff6e0;color:#3a2a10;font:800 11px/1 DM,system-ui,sans-serif;box-shadow:0 0 0 2px var(--brass),0 2px 4px #0007}
.pin-crown{display:block;width:20px;color:var(--brass);filter:drop-shadow(0 1px 2px #000a)}.pin-crown svg{display:block;width:100%}
.pin-seat-status{display:flex;align-items:center;justify-content:center;gap:8px;min-height:18px;font-size:13px;color:#d9d1bd}
.pin-bid{display:inline-block;padding:3px 10px;border-radius:999px;background:#fff6e0;color:#2a1d08;font:800 13px/1.2 DM,system-ui,sans-serif;font-variant-numeric:tabular-nums;box-shadow:0 3px 8px #0006;white-space:nowrap}.pin-bid.is-pass{background:#ffffff1f;color:#e7dfcc;box-shadow:none;font-weight:700}.pin-bid.is-high,.pin-bid.is-maker{background:var(--brass)}.pin-bid.is-meld{background:#ffffff26;color:#fff;box-shadow:none}
.pin-bid.is-new{animation:pin-say .5s cubic-bezier(.2,.9,.3,1.4)}@keyframes pin-say{0%{scale:.4;opacity:0;translate:0 6px}100%{scale:1;opacity:1;translate:0 0}}
.pin-seat.is-turn{border-color:var(--brass);box-shadow:0 0 0 2px #e9c37a55,0 0 26px #e9c37a40}.pin-seat.is-turn .pin-seat-head b:before{content:'';display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:var(--brass);box-shadow:0 0 8px var(--brass);vertical-align:1px;animation:card-turn 1.4s ease-in-out infinite}
.pin-seat.is-taking{animation:pin-take .7s .4s ease-out}@keyframes pin-take{40%{box-shadow:0 0 0 3px var(--brass),0 0 34px #e9c37a99}}
.pin-fan{display:flex;align-items:center;justify-content:center;gap:6px;height:24px;font:700 12px/1 DM,system-ui,sans-serif;color:#cfd6e4}.pin-fan .gin-back{--cw:15px;margin-left:-10px;border-width:1px;border-radius:2px;box-shadow:0 1px 2px #0007;rotate:calc(var(--i)*6deg - 15deg)}.pin-fan-backs{display:flex;padding-left:10px}
.pin-seat-0{bottom:10px;left:50%;transform:translateX(-50%)}.pin-seat-1{left:14px;top:50%;transform:translateY(-50%)}.pin-seat-2{top:10px;left:50%;transform:translateX(-50%)}.pin-seat-3{right:14px;top:50%;transform:translateY(-50%)}
/* Won tricks and their counters */
.pin-pile{position:absolute;z-index:1;width:56px;height:56px}.pin-pile.is-us{left:16%;bottom:15%}.pin-pile.is-them{right:16%;top:15%}
.pin-pile .gin-back{--cw:28px;position:absolute;left:14px;top:6px;rotate:calc(var(--i)*90deg + var(--i)*7deg);box-shadow:inset 0 0 0 2px #143f43,0 2px 4px #0008}.pin-pile .gin-back.is-new{animation:pin-land .4s ease-out}
.pin-pile-count{position:absolute;right:-8px;bottom:-4px;z-index:2;display:grid;place-items:center;min-width:28px;height:24px;padding:0 7px;border-radius:999px;font:800 13px/1 DM,system-ui,sans-serif;background:var(--us);color:#2a1d08;box-shadow:0 2px 6px #0008;font-variant-numeric:tabular-nums}.pin-pile.is-them .pin-pile-count{background:var(--them);color:#0c2a24}.pin-pile-count.is-new{animation:pin-bump .5s ease-out}@keyframes pin-land{from{scale:1.5;opacity:0}}
/* Centre: auction, passing, trick */
.pin-center{position:absolute;left:50%;top:50%;width:270px;height:200px;transform:translate(-50%,-50%);border-radius:40%;transition:background .2s,box-shadow .2s}.pin-center.is-drop{background:#e9c37a1a;box-shadow:0 0 0 2px #e9c37a80}
.pin-auction{position:absolute;left:50%;top:44%;display:grid;justify-items:center;gap:2px;transform:translate(-50%,-50%);padding:12px 22px;border-radius:18px;background:#0a1424b8;border:1px solid #e9c37a55;box-shadow:0 10px 26px #0007;text-align:center}
.pin-auction small{font:800 10px/1 DM,system-ui,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#cdbf9b}.pin-auction b{font:800 40px/1 Bricolage,DM,system-ui,sans-serif;color:#ffe2b0;font-variant-numeric:tabular-nums}.pin-auction span{font-size:13px;color:#e2dccb}
.pin-auction.is-won{border-color:var(--brass);box-shadow:0 0 30px #e9c37a40,0 10px 26px #0007}
.pin-passing{position:absolute;left:50%;top:40%;width:80px;height:100px;transform:translate(-50%,-50%)}.pin-passing .gin-back{--cw:54px;position:absolute;left:calc(var(--i)*6px);top:calc(var(--i)*-3px);rotate:calc(var(--i)*5deg - 8deg);animation:pin-shuffle 1.6s calc(var(--i)*.12s) ease-in-out infinite}
@keyframes pin-shuffle{50%{translate:0 -6px}}
.pin-caption{position:absolute;left:50%;bottom:-4px;width:220px;transform:translateX(-50%);text-align:center;font-size:13px;line-height:1.3;color:#f3ead2;text-shadow:0 1px 2px #000a;pointer-events:none}
.pin-table[data-stage="play"] .pin-caption{top:50%;bottom:auto;width:112px;transform:translate(-50%,-50%);font-size:12px}
.pin-played{position:absolute!important;--cw:68px}.pin-played-0{left:50%;bottom:0;margin-left:-34px;rotate:-4deg}.pin-played-2{left:50%;top:0;margin-left:-34px;rotate:3deg}.pin-played-1{left:0;top:50%;margin-top:-48px;rotate:-10deg}.pin-played-3{right:0;top:50%;margin-top:-48px;rotate:9deg}
.pin-played.is-leading{box-shadow:inset 0 0 0 1px #fff,0 0 0 2px #e9c37ab0,0 8px 14px -6px #000a}.pin-played.is-winner{z-index:3;box-shadow:inset 0 0 0 1px #fff,0 0 0 3px var(--brass),0 0 26px #e9c37aaa}
.pin-played.is-counter::after{content:'10';position:absolute;right:-7px;top:-7px;z-index:2;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--brass);color:#2a1d08;font:800 10px/1 DM,system-ui,sans-serif;box-shadow:0 2px 5px #0008}
/* Peeks */
.pin-peeks{position:absolute;left:4%;top:6%;z-index:4;display:flex;gap:8px}
.pin-peek-button{min-height:44px;padding:8px 14px;border-radius:999px;border:1px solid #ffffff30;background:#0b1830e6;color:#f3ead2;font-size:13px!important;font-weight:700}.pin-peek-button[aria-expanded="true"]{border-color:var(--brass);color:var(--brass)}
.pin-peek{position:absolute;left:4%;top:calc(6% + 52px);z-index:6;display:grid;gap:6px;padding:10px 12px;border-radius:14px;background:#0a1424f2;border:1px solid #e9c37a55;box-shadow:0 12px 26px #000a;font-size:12px}
.pin-peek-row{display:flex;gap:6px}.pin-peek-card{display:grid;justify-items:center;gap:3px}.pin-peek-card .gin-card{--cw:40px}.pin-peek-card.is-winner .gin-card{box-shadow:0 0 0 2px var(--brass),0 0 12px #e9c37a88}.pin-peek-card small{font-size:11px;color:#d9d1bd;max-width:46px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Moments */
.pin-fx{position:absolute;inset:0;z-index:5;pointer-events:none;border-radius:inherit;overflow:hidden}
.pin-moment{position:absolute;left:50%;top:50%;display:grid;justify-items:center;gap:4px;transform:translate(-50%,-50%);animation:pin-moment var(--d,1800ms) var(--age,0ms) both}
.pin-moment i{display:grid;place-items:center;width:84px;height:84px;border-radius:50%;font:700 50px/1 Georgia,serif;font-style:normal;color:#1b2833;background:radial-gradient(circle at 35% 30%,#fffdf6,#f1e2bf 70%,#d8bf86);box-shadow:0 0 0 4px var(--brass),0 0 40px #e9c37acc}
.pin-table[data-trump="1"] .pin-moment i,.pin-table[data-trump="2"] .pin-moment i{color:#c42a3e}
.pin-moment b{padding:7px 15px;border-radius:999px;background:#fff6e0;color:#2a1d08;font:800 16px/1.2 DM,system-ui,sans-serif;letter-spacing:.02em;box-shadow:0 6px 16px #0008;white-space:nowrap}
.pin-moment.is-set b{font:800 clamp(26px,5vw,42px)/1 Bricolage,DM,system-ui,sans-serif;padding:10px 24px;border-radius:14px;background:#c42a3e;color:#fff4ea;rotate:-6deg;box-shadow:0 0 0 4px #fff4ea,0 0 0 7px #c42a3e,0 16px 30px #000a;text-transform:uppercase;letter-spacing:.04em}
.pin-moment.is-made b{font:800 clamp(22px,4vw,34px)/1 Bricolage,DM,system-ui,sans-serif;padding:10px 22px;background:var(--brass)}.pin-moment.is-stuck b{background:#ffffffe8}
@keyframes pin-moment{0%{opacity:0;scale:.5}12%{opacity:1;scale:1.08}22%{scale:1}82%{opacity:1}100%{opacity:0;scale:1}}
/* The meld board: the signature moment */
.pin-meldboard{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0 0;padding:14px;border-radius:26px;background:radial-gradient(ellipse at 50% 30%,#2a5384,#173459 60%,#10223d);box-shadow:inset 0 0 0 6px #6f4426,inset 0 0 0 8px #3a2213,inset 0 0 0 10px #e9c37a40,inset 0 0 70px #050e1eb0}
.pin-meldboard.is-peek{margin-top:10px}
.pin-meld-team{display:grid;align-content:start;gap:10px;padding:12px;border-radius:18px;background:#0a142480;border:1px solid #ffffff14}.pin-meld-team.is-us{border-top:3px solid var(--us)}.pin-meld-team.is-them{border-top:3px solid var(--them)}
.pin-meld-team-head{position:relative;display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:15px;font-weight:700}.pin-meld-team-head strong{position:relative;font:800 30px/1 Bricolage,DM,system-ui,sans-serif;color:#ffe2b0;font-variant-numeric:tabular-nums}.pin-meld-team.is-them .pin-meld-team-head strong{color:#c9f5e8}
.pin-meld-seat{display:grid;gap:8px;padding:10px 12px;border-radius:14px;background:#ffffff0b}.pin-meld-groups{display:flex;flex-wrap:wrap;gap:8px 20px;align-items:center}.pin-meld-seat-head{position:relative;display:flex;justify-content:space-between;gap:10px;font-size:14px;color:#e8e1cf}.pin-meld-seat-head b{position:relative;font:800 18px/1 Bricolage,DM,system-ui,sans-serif;color:#fff;font-variant-numeric:tabular-nums}
.pin-meld-none{font-size:13px;color:#b9b3a3}
.pin-meld-group{display:flex;align-items:center;gap:12px;min-height:58px;animation:pin-group .45s var(--d,0ms) cubic-bezier(.2,.9,.3,1.2) both}
.pin-meld-cards{display:flex;padding-left:20px;flex:none}.pin-meld-cards .gin-card{--cw:46px;margin-left:-20px;box-shadow:inset 0 0 0 1px #ffffffb0,0 4px 8px -3px #000b}
.pin-meld-label{display:grid;gap:1px;min-width:0}.pin-meld-label b{font-size:14px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pin-meld-label span{font:800 16px/1.1 Bricolage,DM,system-ui,sans-serif;color:var(--brass);font-variant-numeric:tabular-nums;animation:pin-points .5s calc(var(--d,0ms) + 380ms) cubic-bezier(.2,.9,.3,1.5) both}
.pin-meld-group.is-run .pin-meld-cards .gin-card,.pin-meld-group.is-dbl-run .pin-meld-cards .gin-card{box-shadow:inset 0 0 0 1px #fff,0 0 0 2px var(--brass),0 0 12px #e9c37a80}
.pin-meld-group.is-dbl-run .pin-meld-label span,.pin-meld-group.is-dbl-aces .pin-meld-label span,.pin-meld-group.is-dbl-kings .pin-meld-label span,.pin-meld-group.is-dbl-queens .pin-meld-label span,.pin-meld-group.is-dbl-jacks .pin-meld-label span,.pin-meld-group.is-dbl-pinochle .pin-meld-label span{font-size:20px;color:#ffe2b0;text-shadow:0 0 12px #e9c37a}
.pin-meld-foot{font-size:13px;color:#d9d1bd}.pin-meldboard.is-static .pin-meld-group,.pin-meldboard.is-static .pin-meld-label span{animation:none}
@keyframes pin-group{from{opacity:0;translate:0 10px}}@keyframes pin-points{from{opacity:0;scale:.4}}
/* Messages, coach, hand */
.pin-message{display:grid;justify-items:center;gap:3px;min-height:48px;margin:14px 0 2px!important;text-align:center;line-height:1.35}.pin-message strong{font-size:clamp(16px,2vw,18px);font-weight:750}.pin-recap{font-size:14px;color:#bfd8ee}
.pin-coach{display:grid;justify-items:center;gap:6px;max-width:660px;margin:4px auto 4px!important;padding:9px 14px;border-radius:12px;background:#ffffff0d;border:1px solid #ffffff1a;font-size:14px;line-height:1.45;text-align:center;color:#e6dfcd}.pin-coach b{color:#ffe2b0}
.pin-suit-melds{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.pin-suit-meld{display:flex;align-items:center;gap:6px;min-height:36px;padding:4px 12px;border-radius:999px;background:#fbf3e2;color:#1b2833;font-weight:800;font-variant-numeric:tabular-nums}.pin-suit-meld i{font:700 20px/1 Georgia,serif;font-style:normal}.pin-suit-meld b{color:#1b2833;font-size:16px}.pin-suit-meld[data-suit="1"] i,.pin-suit-meld[data-suit="2"] i{color:#c42a3e}.pin-suit-meld.is-best{box-shadow:0 0 0 3px var(--brass),0 0 14px #e9c37a88}
.pin-hand{display:flex;justify-content:center;padding:30px 0 40px 16px;min-height:150px;container-type:inline-size}
.pin-hand .gin-card{--cw:min(82px,calc((100cqw + 130px)/var(--n)));--lift:0px;margin-left:-16px;cursor:pointer;transform-origin:50% 130%;transform:translateY(calc(var(--k)*var(--k)*1.2px + var(--lift))) rotate(calc(var(--k)*1.9deg))}
.pin-hand .gin-card.is-suit-start{margin-left:-6px}
.pin-hand .gin-card.is-legal{--lift:-10px}.pin-hand .gin-card.is-unplayable{filter:saturate(.35) brightness(.6);cursor:not-allowed}
@media(hover:hover){.pin-hand .gin-card:not(.is-unplayable):not(.is-selected):not(.is-chosen):hover{--lift:-16px}}
.pin-hand .gin-card.is-selected,.pin-hand .gin-card.is-chosen{--lift:-26px;z-index:4;box-shadow:inset 0 0 0 1px #fff,0 0 0 3px var(--brass),0 0 18px #e9c37a80,0 18px 22px -8px #000c}
.pin-table.is-your-turn[data-stage="play"] .pin-hand .gin-card.is-legal:not(.is-selected){box-shadow:inset 0 0 0 1px #ffffffb0,0 2px 0 #b9ab8a,0 0 0 2px var(--mint),0 12px 16px -8px #000b}
.pin-hand .gin-card.is-received:not(.is-chosen){box-shadow:inset 0 0 0 1px #fff,0 0 0 3px #8fc7ff,0 0 16px #8fc7ff88,0 10px 16px -8px #000b}.pin-hand .gin-card.is-received[data-tag]::after{background:#8fc7ff;color:#0d1a2c}
.pin-hand .gin-card[data-tag]::after{right:auto;left:50%;translate:-50% 0;white-space:nowrap}.pin-hand .gin-card.is-chosen[data-tag]::after{background:var(--brass)}
/* Actions: the bid dial, suits, buttons */
.pin-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:center;margin-top:14px;min-height:48px}.pin-actions .gin-primary{min-height:50px;min-width:190px}.pin-actions .gin-primary:disabled{opacity:.45}
.pin-table .gin-secondary{background:#13284a;color:#fff3d6;border:1px solid #ffffff2e;box-shadow:0 3px 0 #07122a}
.pin-dial{display:flex;align-items:center;gap:6px;padding:4px;border-radius:16px;background:#0a1424;border:1px solid #e9c37a55}
.pin-step{min-width:48px;min-height:48px;border-radius:12px;border:1px solid #ffffff30;background:#162c4f;color:#fff3d6;font:800 22px/1 DM,system-ui,sans-serif}.pin-step.is-jump{font-size:15px;min-width:56px}.pin-step:disabled{opacity:.35;cursor:default}
.pin-dial-value{min-width:84px;text-align:center;font:800 30px/1 Bricolage,DM,system-ui,sans-serif;color:#ffe2b0;font-variant-numeric:tabular-nums}
.pin-suits{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;width:100%}
.pin-suit{display:grid;grid-template-columns:auto auto;grid-template-rows:auto auto;column-gap:9px;align-items:center;min-width:150px;min-height:62px;padding:8px 16px;border-radius:14px;border:1px solid #d6c9ad;background:linear-gradient(#fffdf6,#f1e4c8);color:#1b2833;text-align:left;box-shadow:0 3px 0 #b9ab8a,0 8px 14px -8px #000b;transition:transform .12s}
.pin-suit i{grid-row:span 2;font:700 32px/1 Georgia,serif;font-style:normal}.pin-suit b{font-size:16px}.pin-suit small{font-size:12px;color:#5d5340}.pin-suit[data-suit="1"] i,.pin-suit[data-suit="2"] i{color:#c42a3e}
.pin-suit:not(:disabled):active{transform:translateY(2px)}@media(hover:hover){.pin-suit:not(:disabled):hover{transform:translateY(-2px)}}
.pin-small{width:100%;text-align:center;font-size:13px;color:#d9d1bd}
.pin-note{font-size:13px;color:#cfc6b0;text-align:center;margin:14px 0!important}
/* Results */
.pin-results{position:relative;max-width:600px;margin:14px auto 0;padding:18px 20px;border-radius:18px;text-align:center;color:#1d2a38;background:linear-gradient(#fffaf0,#f2e6cf);box-shadow:0 2px 0 #c9b38c,0 18px 30px -12px #000a;animation:gin-rise .5s .15s cubic-bezier(.2,.8,.3,1) both;overflow:hidden}.pin-results.is-late{animation-delay:1.5s}
.pin-results h3{margin:0 0 4px;font:800 clamp(21px,3vw,28px)/1.2 Bricolage,DM,system-ui,sans-serif;color:#1d3c63}.pin-results.is-set h3{color:#a8202f}.pin-results-sub{font-size:15px;color:#4f5a62;margin:2px 0 8px!important}
.pin-board{width:100%;min-width:0;table-layout:auto;border-collapse:separate;border-spacing:0 6px;margin:8px 0 4px;font-size:15px;font-variant-numeric:tabular-nums}.pin-board th,.pin-board td{padding:8px 10px;text-align:right}.pin-board tr>th:first-child{text-align:left;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pin-board tr:first-child th{background:none;font-size:12px;color:#6a6458;text-transform:uppercase;letter-spacing:.06em;padding-top:0;padding-bottom:0}.pin-board tr.is-us>*,.pin-board tr.is-them>*{background:#ffffffb0}.pin-board tr.is-us>*{background:#fff}.pin-board tr>*:first-child{border-radius:10px 0 0 10px}.pin-board tr>*:last-child{border-radius:0 10px 10px 0}
.pin-board td.is-neg{color:#a8202f;font-weight:800}.pin-board strong{font:800 20px/1 Bricolage,DM,system-ui,sans-serif}
.pin-more{color:#ffe2b0;font-weight:700;text-underline-offset:3px;padding:12px 6px}
.pin-confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none}.pin-confetti i{position:absolute;top:-24px;left:calc(var(--x,50)*1%);font-style:normal;font-size:16px;color:#c42a3e;opacity:0;animation:pin-fall 2.8s ease-in forwards}
.pin-confetti i:nth-child(2n){color:#1b2833}.pin-confetti i:nth-child(3n){color:#c99a3c}
.pin-confetti i:nth-child(1){--x:6;animation-delay:.5s}.pin-confetti i:nth-child(2){--x:14;animation-delay:.9s}.pin-confetti i:nth-child(3){--x:22;animation-delay:.6s}.pin-confetti i:nth-child(4){--x:31;animation-delay:1.2s}.pin-confetti i:nth-child(5){--x:39;animation-delay:.7s}.pin-confetti i:nth-child(6){--x:47;animation-delay:1s}.pin-confetti i:nth-child(7){--x:55;animation-delay:.55s}
.pin-confetti i:nth-child(8){--x:62;animation-delay:1.3s}.pin-confetti i:nth-child(9){--x:69;animation-delay:.8s}.pin-confetti i:nth-child(10){--x:76;animation-delay:1.1s}.pin-confetti i:nth-child(11){--x:83;animation-delay:.65s}.pin-confetti i:nth-child(12){--x:90;animation-delay:1.4s}.pin-confetti i:nth-child(13){--x:95;animation-delay:.95s}.pin-confetti i:nth-child(14){--x:3;animation-delay:1.5s}
@keyframes pin-fall{0%{opacity:0;translate:0 0;rotate:0deg}10%{opacity:1}100%{opacity:0;translate:-12px 360px;rotate:200deg}}
/* Help */
.pin-help{border-top:1px solid #ffffff30;padding-top:14px;font-size:15px}.pin-help summary{min-height:44px;cursor:pointer;display:flex;align-items:center}.pin-help p{color:#e2dccb;font-size:15px;line-height:1.6;margin:0 0 10px!important}
.pin-meld-table,.pin-scorecard{width:100%;min-width:0;border-collapse:collapse;font-size:14px;margin:6px 0 12px}.pin-meld-table caption,.pin-scorecard caption{text-align:left;padding:8px 0;font-weight:700}.pin-meld-table th,.pin-meld-table td,.pin-scorecard th,.pin-scorecard td{text-align:left;padding:8px 6px;border-bottom:1px solid #ffffff22;font-variant-numeric:tabular-nums}.pin-meld-table th,.pin-scorecard th{background:#ffffff12;color:#ffe2b0;font-weight:800}
/* Pages */
.pin-shell{max-width:1070px;margin:auto}.pin-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px}.pin-heading h1{font-size:clamp(36px,6vw,64px);margin:0}.pin-heading nav{display:flex;gap:16px;flex-wrap:wrap}
.pin-start{position:relative;padding:36px;border-radius:24px;background:linear-gradient(160deg,#eef2f8,#e2e9f3);margin:20px 0;overflow:hidden}.pin-start h2{margin-top:0;max-width:560px}.pin-start p{max-width:640px;font-size:17px}.pin-start .button{margin:14px 8px 10px 0}
.pin-options{display:grid;gap:10px;max-width:640px;margin:18px 0 6px;padding:0;border:0}.pin-options legend{font-weight:800;margin-bottom:8px;padding:0}
.pin-options label{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;align-items:center;min-height:56px;padding:12px 14px;border-radius:14px;background:#fff;border:2px solid #d3dceb;cursor:pointer}.pin-options label:has(input:checked){border-color:#1e4f86;box-shadow:0 0 0 3px #1e4f8622}.pin-options input{width:22px;height:22px;accent-color:#1e4f86;grid-row:span 2}.pin-options span{font-size:14px;color:#4f5a62}
.pin-start-art{position:absolute;right:28px;top:26px;width:170px;opacity:.95;pointer-events:none}.pin-start-art svg{display:block;width:100%}
.pin-landing{display:grid;grid-template-columns:1fr 1.1fr;gap:38px;align-items:center}.pin-landing h1{font-size:clamp(40px,6vw,68px);line-height:1.03;margin:14px 0 18px}.pin-landing p{font-size:18px;max-width:510px}
.pin-hero{position:relative;display:block;border-radius:28px;overflow:hidden;aspect-ratio:3/2;background:#14223a;box-shadow:0 20px 40px #0a142640}.pin-hero img{display:block;width:100%;height:100%;object-fit:cover}
.pin-play-link{display:inline-flex;align-items:center;gap:10px;font-size:18px!important}.pin-landing .party-small{margin-top:16px;font-size:15px;color:#4f4a5a}
.pin-inshort{max-width:860px;padding:20px 24px;border-left:5px solid #1e4f86;border-radius:0 18px 18px 0;background:#eef2f8}.pin-inshort h2{margin:0 0 8px;font-size:22px}.pin-inshort p{margin:0;font-size:17px;line-height:1.6}
.pin-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin:26px 0}.pin-facts div{padding:16px 18px;border-radius:18px;background:#f3f1ea}.pin-facts h3{font-size:17px;margin:0 0 6px}.pin-facts p{font-size:15px;margin:0;line-height:1.5}
.pin-steps{display:grid;gap:10px;padding-left:22px;max-width:860px}.pin-steps li{line-height:1.6;font-size:17px}
.pin-ranks{width:100%;min-width:0;max-width:860px;border-collapse:collapse;margin:14px 0 20px;font-size:16px}.pin-ranks caption{text-align:left;font-weight:800;padding:8px 0}.pin-ranks th,.pin-ranks td{text-align:left;padding:10px 12px;border-bottom:1px solid #e1ddd2;vertical-align:top}.pin-ranks th{background:#f3f1ea}.pin-ranks .is-red{color:#b8283a;font-weight:800}.pin-ranks .is-black{color:#1b2833;font-weight:800}.pin-ranks td:last-child{font-variant-numeric:tabular-nums}
.pin-faq details{border-top:1px solid #e1ddd2;padding:4px 0}.pin-faq summary{min-height:48px;display:flex;align-items:center;cursor:pointer;font-weight:700;font-size:17px}.pin-faq p{max-width:860px;line-height:1.65;font-size:16px}
.pin-links{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:18px}
/* Room lobby: seats and teams */
.pin-lobby .pin-seatmap{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}
.pin-seatmap-team{display:grid;gap:8px;padding:10px;border-radius:14px;background:#f3f1ea;border-top:4px solid #e0b25c}.pin-seatmap-team.is-b{border-top-color:#3fa58b}.pin-seatmap-team h4{margin:0;font-size:14px}
.pin-seatmap button,.pin-seatmap .pin-seatmap-seat{display:grid;gap:2px;min-height:52px;padding:8px 12px;border-radius:12px;border:2px solid #d8d2c2;background:#fff;text-align:left;font:inherit;color:inherit}.pin-seatmap button{cursor:pointer}.pin-seatmap button.is-picked{border-color:#1e4f86;box-shadow:0 0 0 3px #1e4f8633}.pin-seatmap small{font-size:12px;color:#5d5340}
.party-stage.pinochle-room-stage{padding:0;background:transparent;border:0}
@media(max-width:800px){.pin-landing{grid-template-columns:1fr}.pin-facts{grid-template-columns:1fr 1fr;gap:10px}.pin-start-art{display:none}.pin-meldboard{grid-template-columns:1fr}}
@media(max-width:600px){.pin-shell{padding:18px 10px}.pin-heading{margin-bottom:12px}.pin-start{padding:22px}.pin-facts{grid-template-columns:1fr}
 .pin-table{padding:12px 10px;border-radius:18px}.pin-hud{gap:6px}.pin-team{padding:7px 9px 8px;border-radius:12px;column-gap:4px}.pin-team-name{font-size:12px}.pin-team>strong{font-size:24px}.pin-of{font-size:11px;padding-bottom:2px}.pin-hand-line{font-size:11px;line-height:1.3}.pin-progress{height:4px;margin:3px 0 2px}.pin-makers{font-size:9px;padding:2px 6px;right:6px;top:-8px}
 .pin-trump{min-width:80px;padding:6px 5px;border-radius:12px}.pin-trump small{font-size:8px}.pin-trump b{font-size:12px}.pin-trump-by{font-size:10px;max-width:80px}.pin-coin{width:36px;height:36px;font-size:21px;margin:2px 0 0}.pin-coin.is-bid{min-width:50px;height:32px;font-size:17px;padding:0 6px}
 .pin-felt{height:320px;margin-top:8px;border-radius:38%/30%}.pin-felt::before{width:130px;height:130px}
 .pin-seat{display:flex;flex-direction:column;gap:2px;min-width:0;max-width:31%;padding:5px 7px;font-size:12px;border-radius:10px}.pin-seat-head b{font-size:12px}.pin-seat-status{font-size:11px;gap:4px;min-height:0}.pin-fan{display:none}.pin-dealer{width:17px;height:17px;font-size:10px}.pin-crown{width:16px}.pin-bid{font-size:11px;padding:2px 7px}
 .pin-seat-1{left:6px;top:25%}.pin-seat-3{right:6px;top:25%}.pin-seat-0{bottom:6px}.pin-seat-2{top:6px}
 .pin-pile{width:40px;height:44px}.pin-pile .gin-back{--cw:20px;left:10px}.pin-pile.is-us{left:8%;bottom:21%}.pin-pile.is-them{right:8%;top:auto;bottom:36%}.pin-pile-count{min-width:24px;height:20px;font-size:11px;right:-10px}
 .pin-center{width:190px;height:170px}.pin-played{--cw:54px}.pin-played-0,.pin-played-2{margin-left:-27px}.pin-played-1,.pin-played-3{margin-top:-38px}.pin-played-1{left:0}.pin-played-3{right:0}.pin-table[data-stage="play"] .pin-caption{display:none}.pin-played.is-counter::after{width:18px;height:18px;font-size:9px;right:-5px;top:-5px}
 .pin-auction{padding:8px 14px}.pin-auction b{font-size:30px}.pin-auction span{font-size:12px}.pin-caption{font-size:12px;width:180px}.pin-passing .gin-back{--cw:42px}
 .pin-peeks{left:auto;top:auto;right:6px;bottom:6px;flex-direction:column;align-items:flex-end;gap:6px}.pin-peek-button{padding:6px 12px;font-size:12px!important}.pin-peek{left:auto;top:auto;right:6px;bottom:108px}.pin-peek-card .gin-card{--cw:34px}
 .pin-moment i{width:64px;height:64px;font-size:38px}.pin-moment b{font-size:14px}
 .pin-message{min-height:38px;margin-top:8px!important}.pin-message strong{font-size:15px}.pin-recap{font-size:13px}.pin-coach{font-size:13px;padding:7px 10px}
 /* Twelve cards: two readable rows, each card at least 44px wide. */
 .pin-hand{flex-wrap:wrap;row-gap:16px;padding:24px 0 14px;min-height:116px}.pin-hand .gin-card,.pin-hand .gin-card.is-suit-start{--cw:min(64px,calc(100cqw/var(--row) - 5px));margin:0 2px;transform:translateY(var(--lift))}
 .pin-hand .gin-card.is-legal{--lift:-5px}.pin-hand .gin-card.is-selected,.pin-hand .gin-card.is-chosen{--lift:-9px}.pin-hand .gin-card[data-tag]::after{top:-9px;font-size:8px;padding:3px 5px}
 .pin-actions{margin-top:10px;gap:8px}.pin-actions .gin-primary{font-size:15px;padding:12px;min-width:0;flex:1 1 auto}.pin-actions .gin-secondary{padding:12px 14px}
 .pin-dial{order:-1;width:100%;justify-content:center}.pin-dial-value{min-width:70px;font-size:26px}
 .pin-suit{min-width:0;flex:1 1 40%;padding:8px 10px;column-gap:6px;min-height:60px}.pin-suit i{font-size:26px}.pin-suit b{font-size:14px}.pin-suit small{font-size:11px}
 .pin-meldboard{padding:10px;gap:10px;border-radius:18px}.pin-meld-team{padding:10px;gap:8px}.pin-meld-seat{padding:8px 10px}.pin-meld-cards .gin-card{--cw:36px;margin-left:-14px}.pin-meld-cards{padding-left:14px}.pin-meld-group{gap:9px;min-height:50px}.pin-meld-label b{font-size:13px}
 .pin-results{padding:14px 10px}.pin-board{font-size:13px}.pin-board th,.pin-board td{padding:7px 5px}.pin-board strong{font-size:16px}.pin-board tr>th:first-child{max-width:110px}
 .pin-ranks{font-size:14px}.pin-ranks th,.pin-ranks td{padding:8px 6px}.pin-lobby .pin-seatmap{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.pin-table *,.pin-hero *{animation:none!important;transition:none!important}.pin-confetti{display:none}}
