:root{color-scheme:dark;--bg:#120f12;--panel:#211b20;--edge:#49353f;--ink:#f5eee7;--muted:#b9aab0;--red:#d94761;--gold:#d2b58c;--felt:#18352f;--card:68px;--card-h:96px;font:16px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 20%,#2b1620,transparent 60%),var(--bg);color:var(--ink);min-width:280px}button,input,select{font:inherit}button,a,select,input{touch-action:manipulation}button{border:1px solid var(--edge);border-radius:9px;background:#30242c;color:var(--ink);padding:.6rem .95rem;min-height:42px;cursor:pointer;transition:background .15s,transform .15s}button:hover{background:#49303e}button:disabled{opacity:.48;cursor:default}button.primary{background:#b82c47;border-color:#e15970;font-weight:700}button.primary:hover{background:#d13c57}a{color:#f191a4}a:hover{color:#ffc4cf}button.quiet{background:transparent}.text-button{border:0;background:transparent;color:var(--gold)}:focus-visible{outline:3px solid #f3c96e;outline-offset:3px}input,select{border:1px solid #694957;background:#180f16;color:var(--ink);padding:.5rem;border-radius:6px;max-width:100%}input[type=checkbox]{accent-color:#dc4b66;width:19px;height:19px}label{display:flex;gap:10px;align-items:center}.site-header{display:flex;align-items:center;justify-content:space-between;padding:17px max(20px,calc((100vw - 1200px)/2));border-bottom:1px solid #432331;gap:16px;background:#140f14bd}.back{font-size:.85rem;text-decoration:none}.brand{font-family:Georgia,serif;font-weight:bold;font-size:1.12rem;letter-spacing:.02em}.brand span{font-family:system-ui,sans-serif;font-size:.65rem;letter-spacing:.17em;text-transform:uppercase;margin-left:10px;color:var(--muted)}main{max-width:1180px;margin:auto;padding:20px 24px 0}.screen[hidden],*[hidden]{display:none!important}.hero{text-align:center;padding:34px 0 20px}.eyebrow{font-size:.65rem;font-weight:700;letter-spacing:.19em;color:var(--gold)}.emblem{display:block;width:94px;height:94px;margin:25px auto 3px}h1{font:normal clamp(60px,9vw,108px)/1.05 Georgia,serif;letter-spacing:-.065em;margin:5px 0 18px}.red-dot{color:var(--red)}.tagline{font-size:1.12rem;color:var(--gold);margin:0}.intro{color:var(--muted);font-size:.95rem;margin:18px 0 10px}.menu-actions{max-width:500px;margin:0 auto}.large{display:block;width:100%;margin:12px 0;text-align:left;padding:16px 22px;font-size:1.1rem}.large span{display:block;font-size:.76rem;font-weight:400;opacity:.8;margin-top:3px}.menu-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}.menu-pair button{font-size:.86rem}.menu-pair.subtle button{background:transparent;color:var(--muted)}.menu-foot{display:flex;justify-content:center;gap:25px;font-size:.63rem;letter-spacing:.15em;color:var(--muted);margin:30px 0 12px}#menu>.text-button{display:block;margin:auto}footer{display:flex;justify-content:space-between;max-width:1180px;margin:30px auto 0;padding:20px 24px;color:#a18b98;font-size:.72rem;border-top:1px solid #32232c}.game-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:8px}h2{font:normal 1.85rem/1.2 Georgia,serif;margin:5px 0 8px}.table-tools{display:flex;gap:8px}.score-strip{display:grid;grid-template-columns:1fr 1fr;gap:12px}.score-box{display:flex;align-items:center;justify-content:space-between;padding:10px 17px;background:#241b22;border:1px solid #4e3441;border-radius:10px;gap:10px}.score-box strong{font-size:1.5rem;font-variant-numeric:tabular-nums}.score-box.active{border-color:var(--gold)}.score-box small{color:var(--muted);display:block;font-size:.68rem}.contract-strip{display:flex;justify-content:space-between;gap:10px;font-size:.79rem;color:var(--gold);padding:10px 4px}.felt{position:relative;min-height:290px;background:radial-gradient(ellipse at center,#24483d,#142e28);border:7px solid #3b252b;outline:1px solid #684449;border-radius:100px;box-shadow:inset 0 0 45px #0006,0 10px 35px #0004;overflow:hidden}.felt:after{content:"";position:absolute;inset:12px;border:1px solid #9fbb8430;border-radius:90px;pointer-events:none}.seat{position:absolute;z-index:2;text-align:center;min-width:100px;max-width:180px;background:#10251fdd;border:1px solid #67816d50;border-radius:9px;padding:5px 10px;font-size:.82rem}.seat small{display:block;color:#b5ccba;font-size:.67rem}.seat.active{border-color:#f2ca89;box-shadow:0 0 0 2px #f2ca8922}.seat.bottom{bottom:12px;left:50%;transform:translateX(-50%)}.seat.top{top:12px;left:50%;transform:translateX(-50%)}.seat.left{left:20px;top:50%;transform:translateY(-50%)}.seat.right{right:20px;top:50%;transform:translateY(-50%)}.table-center{position:relative;z-index:1;width:60%;min-height:270px;margin:auto;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:55px 4px}.table-caption{color:#d4ddc5;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;margin-bottom:8px;text-align:center}.trick-area{display:flex;justify-content:center;gap:14px}.trick-slot{text-align:center;font-size:.64rem;color:#cad8cb}.trick-slot .card{display:block;margin:4px auto 0}.trick-slot.winning .card{box-shadow:0 0 0 3px #f3d182}.trick-slot.winning:after{content:"WINNING";font-size:.55rem;letter-spacing:.08em;color:#ffe5a5}#centerDetails{text-align:center;color:#d9e3d4;font-size:.81rem;max-height:132px;overflow:auto;scrollbar-width:thin}.auction-list{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}.bid-chip{padding:3px 7px;border:1px solid #94b59c55;border-radius:5px;font-size:.68rem}.status{font-size:.9rem;padding:12px 4px 6px;min-height:45px}.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;min-height:50px;margin:5px 0 9px}.actions p{margin:0;color:var(--muted);font-size:.85rem}.hand-panel{border-top:1px solid #50303f;padding-top:8px}.hand-heading{display:flex;align-items:center;justify-content:space-between;gap:6px}.hand-heading>div{display:flex;gap:6px;align-items:center}h3{font-size:.9rem;margin:5px 0}.hand-heading select,.hand-heading button{font-size:.73rem;min-height:34px;padding:.3rem .6rem}.hand{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;padding:18px 2px 5px;min-height:122px}.card{position:relative;display:inline-flex;flex-direction:column;justify-content:space-between;align-items:stretch;text-align:left;width:var(--card);height:var(--card-h);flex:0 0 var(--card);padding:6px 7px;line-height:1;background:#fbf5e8;color:#202027;border-radius:7px;border:1px solid #cec6b6;box-shadow:0 4px 7px #0005;font-family:Georgia,serif;font-size:24px;min-height:0}.card:hover{background:#fff7e7}.card.red{color:#b92140}.card .corner{display:flex;gap:3px;font-weight:bold;align-items:center}.card .pip{align-self:center;font-size:34px}.card .lower{align-self:flex-end;transform:rotate(180deg);font-size:12px}.card.illegal{background:#ccc5bc;filter:brightness(.8)}.card.selected{transform:translateY(-11px);outline:3px solid #f5ce81;background:#fff7d7}.card.hinted{outline:3px solid #65d9b1}.selection-info{font-size:.78rem;color:var(--gold);min-height:24px;text-align:center}.bottom-tools{display:flex;justify-content:center;gap:7px;margin-top:10px;flex-wrap:wrap}.bottom-tools button{font-size:.73rem;min-height:36px;background:transparent}.summary{width:100%;border-collapse:collapse;font-size:.85rem}.summary td,.summary th{text-align:left;border-bottom:1px solid #583e4b;padding:8px 5px}.summary th{color:var(--gold)}.summary .total{font-size:1rem;font-weight:bold}.badge{display:inline-block;padding:3px 8px;background:#30232c;color:var(--gold);border:1px solid #5c424d;border-radius:5px;font-size:.75rem}.room-code{font-size:2.7rem;letter-spacing:.15em;color:var(--gold);font-family:monospace}.lobby-seat{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:9px;border:1px solid var(--edge);padding:14px;margin:10px 0;border-radius:10px}.lobby-seat small{display:block;color:var(--muted)}dialog{background:#211820;color:var(--ink);border:1px solid #7c4c61;border-radius:15px;max-width:760px;width:calc(100vw - 28px);max-height:calc(100dvh - 32px);padding:0;box-shadow:0 20px 100px #000b}dialog::backdrop{background:#060307cf;backdrop-filter:blur(5px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 20px;position:sticky;top:0;background:#251a22;z-index:5;border-bottom:1px solid #553a48}.dialog-head h2{margin:0;font-size:1.5rem}.dialog-head button{font-size:1.1rem;min-width:42px;padding:.3rem}.dialog-head+#dialogBody{padding:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field{display:flex;flex-direction:column;align-items:stretch;gap:4px;font-size:.8rem}.field small{color:var(--muted)}.player-row{display:grid;grid-template-columns:70px 1fr 110px 95px;gap:8px;align-items:center;margin:10px 0;font-size:.8rem}.player-row input{min-width:0;width:100%}.dialog-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.help{font-size:.82rem;color:#cab7c2}.rule-section{border-top:1px solid var(--edge);padding:12px 0}iframe.rules-frame{border:0;width:100%;height:65dvh}details{margin:12px 0}summary{cursor:pointer;color:var(--gold)}.mini-cards{display:flex;gap:4px;flex-wrap:wrap;margin:5px 0 12px}.mini-card{font-family:Georgia,serif;color:#19171c;background:#f2e9d7;border-radius:4px;padding:2px 5px;font-size:.85rem}.mini-card.red{color:#b41f3c}.privacy{position:fixed;inset:0;background:radial-gradient(ellipse at top,#351e2b,#120d12);z-index:20;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;padding:25px;text-align:center}.privacy h2{font-size:2.5rem}.privacy button{min-width:230px}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:40;background:#4b2333;border:1px solid #f094a8;box-shadow:0 4px 20px #0009;border-radius:10px;padding:14px 20px;max-width:calc(100vw - 30px);width:max-content;color:white;font-size:.9rem}.tutorial-nav{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:20px}.tutorial-example{background:#163a30;border:1px solid #507d64;border-radius:12px;padding:18px;margin:16px 0}.tutorial-example .card{margin:3px}.big-card{--card:124px;--card-h:178px;margin:15px auto;font-size:40px;display:flex}.big-card .pip{font-size:65px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}body.larger{--card:78px;--card-h:108px;font-size:18px}.online-note{font-size:.78rem;color:var(--muted);margin-top:15px}#lobbyStatus{color:var(--gold)}
@media(max-width:700px){:root{--card:53px;--card-h:76px}.site-header{padding:10px 12px;gap:8px}.brand{font-size:.86rem}.brand span{display:block;font-size:.48rem;margin:0;letter-spacing:.12em}.back{font-size:.7rem}.site-header button{font-size:.72rem;padding:.4rem .6rem;min-height:36px}main{padding:12px 10px 0}.hero{padding:25px 0 14px}.emblem{width:75px;height:75px;margin:18px auto 8px}.tagline{font-size:.95rem}.intro{font-size:.84rem}.large{padding:14px 17px}.menu-foot{gap:17px;font-size:.55rem}footer{padding:15px 12px;font-size:.6rem;gap:8px;margin-top:20px}h2{font-size:1.5rem}.game-top{margin-bottom:6px}.table-tools button{min-height:34px;font-size:.75rem;padding:.3rem .6rem}.score-strip{gap:7px}.score-box{padding:7px 10px;font-size:.76rem;border-radius:8px}.score-box strong{font-size:1.25rem}.score-box small{font-size:.57rem}.contract-strip{font-size:.67rem;padding:7px 2px;gap:5px;flex-wrap:wrap}.felt{min-height:238px;border-width:4px;border-radius:40px}.felt:after{inset:7px;border-radius:30px}.seat{min-width:75px;max-width:115px;font-size:.67rem;padding:4px 7px}.seat small{font-size:.54rem}.seat.top{top:7px}.seat.bottom{bottom:7px}.seat.left{left:5px;top:58px;transform:none;max-width:95px}.seat.right{right:5px;top:auto;bottom:11px;transform:none;max-width:95px}.table-center{width:100%;min-height:230px;padding:60px 6px 58px}.trick-area{gap:8px}.trick-slot{font-size:.56rem}.table-caption{font-size:.58rem;margin-bottom:5px}#centerDetails{font-size:.72rem;max-height:94px;max-width:80%}.bid-chip{font-size:.58rem}.card{font-size:19px;padding:5px 5px}.card .pip{font-size:27px}.card .lower{font-size:10px}.trick-slot .card{--card:47px;--card-h:66px;font-size:17px}.trick-slot .card .pip{font-size:23px}.status{font-size:.79rem;padding:9px 3px 2px;min-height:35px}.actions{gap:6px;margin:4px 0 8px;min-height:42px}.actions button{padding:.45rem .65rem;min-height:40px;font-size:.79rem}.actions p{font-size:.74rem}.hand-heading h3{font-size:.75rem}.hand-heading select{max-width:125px}.hand{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:13px 5px;padding-top:15px;min-height:90px;justify-items:center}.hand .card{width:100%;max-width:62px;min-width:0;--card-h:76px;flex:none}.hand .card.selected{transform:translateY(-7px)}.selection-info{font-size:.69rem;margin-top:4px;min-height:20px}.bottom-tools{gap:5px;margin-top:6px}.bottom-tools button{padding:.3rem .5rem;font-size:.65rem;min-height:34px}#tableScreen+.screen{}body.larger{--card:57px;--card-h:84px;font-size:17px}body.larger .hand{grid-template-columns:repeat(5,minmax(0,1fr))}.form-grid{grid-template-columns:1fr}.player-row{grid-template-columns:43px 1fr 92px;gap:5px}.player-row select:last-child{grid-column:2/4}.player-row input{font-size:.8rem}.dialog-head{padding:12px}.dialog-head+#dialogBody{padding:14px}.summary{font-size:.72rem}.summary td,.summary th{padding:7px 3px}.dialog-head h2{font-size:1.3rem}.room-code{font-size:2rem}.tutorial-example{padding:12px}.mini-card{font-size:.8rem}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}@media print{header,footer,.actions,.bottom-tools,button{display:none!important}body{background:white;color:black}dialog{position:static;display:block;max-height:none;color:black;background:white;border:0;box-shadow:none}.dialog-head{background:white}.summary th{color:black}}
.card:disabled{opacity:1;cursor:default}
body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom)}
.card.big-card{font-size:40px}.card.big-card .pip{font-size:65px}.card.big-card .lower{font-size:20px}
.seat strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:700px){.seat.left,.seat.right{top:7px;bottom:auto;max-width:90px;min-width:65px;transform:none}.seat.top{max-width:110px}.seat.bottom{max-width:140px}}
