:root{--red:#d71920;--wine:#6f0910;--black:#090909;--felt:#123f35;--gold:#d7b66b;--cream:#fff9e9;--muted:#b8b8b8;--card-w:clamp(46px,8vw,86px);font-family:Georgia,"Times New Roman",serif;color-scheme:dark}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 50% 0,#3a0508,#080808 52%);color:#fff;min-height:100vh}.skip{position:fixed;left:-999px}.skip:focus{left:1rem;top:1rem;z-index:50;background:#fff;color:#000;padding:.7rem}.topbar{height:64px;display:flex;align-items:center;gap:1rem;padding:0 clamp(12px,4vw,48px);border-bottom:1px solid #5d2024;background:#090909dd}.brand{color:#fff;text-decoration:none;font:bold 1.1rem Arial}.brand span{color:var(--red)}.topbar h1{margin:auto;font-size:1.45rem;letter-spacing:.12em}.topbar button,button,select,input{font:inherit}.screen{display:none}.screen.active{display:block}.hero{text-align:center;padding:clamp(2rem,8vw,6rem) 1rem 2rem}.hero h2{font-size:clamp(2.7rem,8vw,6rem);margin:.1em;color:var(--cream);text-shadow:0 4px 18px #000}.hero p{color:#ddd}.eyebrow{text-transform:uppercase;letter-spacing:.2em;color:var(--gold)!important}.menu{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap;padding:1rem}.menu.cards button{width:min(300px,90vw);min-height:130px;background:linear-gradient(145deg,#2d0a0d,#100405);border-color:#7b3438}.menu strong,.menu small{display:block}.menu strong{font-size:1.25rem}.menu small{margin-top:.6rem;color:#ccc}button{border:1px solid #6d6d6d;border-radius:8px;background:#211f20;color:#fff;padding:.7rem 1rem;cursor:pointer;min-height:44px}button:hover,button:focus-visible{border-color:var(--gold);outline:3px solid #f5d68a55;outline-offset:2px}.primary{background:linear-gradient(#e0242b,#9b0c12);border-color:#ff7074}.panel{max-width:760px;margin:3rem auto;background:#111d;border:1px solid #5b3537;padding:clamp(1rem,4vw,2rem);border-radius:16px;box-shadow:0 20px 60px #000}.setup-panel label{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin:1rem 0}.setup-panel select,.setup-panel input{padding:.55rem;background:#171717;border:1px solid #666;border-radius:6px;max-width:60%}fieldset{border:1px solid #634;margin:1.5rem 0}#seatSetup>div{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.5rem;align-items:center;margin:.5rem}.actions{display:flex;justify-content:flex-end;gap:.7rem;margin-top:1.5rem}.notice{border-left:4px solid var(--gold);padding:.7rem;background:#282116}.scorebar{height:78px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;text-align:center;background:#0b0b0bee;border-bottom:1px solid #532}.scorebar>div:first-child{text-align:left;padding-left:1rem}.scorebar>div:last-child{text-align:right;padding-right:1rem}.scorebar b,.scorebar span,.scorebar small{display:block}.scorebar span{font-size:1.35rem;color:var(--gold)}.handNo{padding:0 1rem}.table{position:relative;max-width:1100px;height:calc(100vh - 210px);min-height:520px;margin:auto;background:radial-gradient(ellipse,#1e6655,#0a332b 70%,#071d19);border:clamp(8px,2vw,24px) solid #321b13;border-radius:22%;box-shadow:inset 0 0 50px #000,0 15px 35px #000}.seat{position:absolute;text-align:center;min-width:110px}.seat b,.seat small{display:block;text-shadow:0 2px 4px #000}.seat.active b{color:#ffe17e}.north{top:1%;left:50%;transform:translateX(-50%)}.south{bottom:150px;left:50%;transform:translateX(-50%)}.east{right:2%;top:42%}.west{left:2%;top:42%}.dealer:after{content:"D";display:none;background:#eee;color:#111;border-radius:50%;width:22px;height:22px;line-height:22px;position:absolute}.seat.dealing .dealer:after{display:block}.backfan{width:70px;height:26px;margin:auto;background:repeating-linear-gradient(90deg,#780c15 0 4px,#eee 5px 6px);border-radius:3px;border:2px solid #eee}.broken{position:absolute;left:50%;top:18%;transform:translateX(-50%);background:#0009;border:1px solid #777;border-radius:20px;padding:.35rem .7rem}.trick{position:absolute;inset:26% 22% 38%;display:grid;grid-template:1fr 1fr/1fr 1fr;place-items:center}.played{width:var(--card-w);aspect-ratio:2.5/3.5;background:#fff;color:#111;border-radius:7px;padding:.35rem;box-shadow:0 6px 14px #0008;font-weight:bold;font-size:clamp(.9rem,2vw,1.3rem)}.played.red,.card.red{color:#b4000a}.hand{position:absolute;bottom:8px;left:3%;right:3%;height:145px;display:flex;justify-content:center;align-items:flex-end;overflow:visible}.card{width:var(--card-w);aspect-ratio:2.5/3.5;margin-left:calc(var(--card-w)*-.32);border:2px solid #ddd;border-radius:8px;background:linear-gradient(145deg,#fff,#e6e1d6);color:#101010;padding:.3rem;font-weight:bold;font-size:clamp(.8rem,2vw,1.2rem);box-shadow:0 5px 10px #0008;transition:transform .15s}.card:first-child{margin-left:0}.card:hover,.card:focus{transform:translateY(-18px);z-index:3}.card:disabled{filter:brightness(.55);cursor:not-allowed}.card .suit{font-size:1.45em}.bidbox{position:absolute;z-index:10;left:50%;top:48%;transform:translate(-50%,-50%);background:#101010ee;padding:1rem;border:1px solid var(--gold);border-radius:12px;text-align:center;max-width:90%}.bidbox button{min-width:42px;margin:.2rem}.pass-cover{position:absolute;z-index:20;inset:0;background:#080808f5;display:grid;place-content:center;text-align:center}.pass-cover[hidden],.bidbox[hidden]{display:none}.game-controls{display:flex;justify-content:center;gap:.4rem;padding:.5rem;flex-wrap:wrap}.message{text-align:center;margin:.2rem;min-height:1.5em}.modal::backdrop{background:#000c}dialog{max-width:700px;width:90%;background:#171717;color:#fff;border:1px solid #844;border-radius:12px;padding:1.5rem}.close{float:right;font-size:1.5rem}.log{max-height:55vh;overflow:auto}.breakdown{width:100%;border-collapse:collapse}.breakdown td,.breakdown th{padding:.5rem;border-bottom:1px solid #444;text-align:left}
body.large{--card-w:clamp(58px,10vw,104px)}body.xtext{font-size:120%}body.contrast{--felt:#002b22;--gold:#fff27a}.sr-only{position:absolute;left:-10000px}
@media(max-width:650px){.topbar{height:54px}.topbar h1{font-size:1.1rem}.table{height:calc(100vh - 205px);min-height:500px;border-radius:12%}.east{right:0}.west{left:0}.seat{min-width:80px}.trick{inset:25% 18% 39%}.hand{height:130px;left:1%;right:1%}.scorebar b{font-size:.8rem}.card{margin-left:calc(var(--card-w)*-.42)}.broken{top:14%;font-size:.78rem}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
