:root{--paper:#e4e0d5;--ink:#25221b;--card-scale:1;--name-scale:1;--table-scale:1}*{box-sizing:border-box}html{min-height:100%;background:#26231e}body{margin:0;color:var(--ink);font:15px/1.4 Arial,Helvetica,sans-serif;background:#29251f}button,input,select{font:inherit}button{cursor:pointer;color:#171611;border:2px solid #171611;border-radius:6px;background:linear-gradient(#fff,#b3b3ad);box-shadow:inset 0 1px #fff,0 1px 2px #0006;min-height:39px;padding:7px 12px;text-shadow:0 1px #fff7}button:hover{background:linear-gradient(#fff,#d3d0c4)}button:disabled{cursor:default;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #cf9d2e;outline-offset:2px}button.text-button{background:none;border:0;box-shadow:none;min-height:24px;font-size:11px;color:#f4e4bc;text-shadow:0 1px #000}.app-frame{max-width:600px;min-height:100dvh;margin:0 auto;position:relative;overflow-x:hidden;background:#715139 url('wood.svg') center/cover fixed;box-shadow:0 0 30px #0008}#appHeader{height:38px;display:flex;align-items:center;gap:4px;background:linear-gradient(#4e4b46ed,#262522f2);color:#f4f0e5;position:relative;z-index:20;border-bottom:1px solid #b7ac9266}#screenTitle{font:bold 19px Georgia,serif;text-shadow:0 1px 2px #000;text-align:center;line-height:1.05;margin:0;flex:1}#appHeader .icon-button{min-width:33px;min-height:35px;width:33px;padding:0;border:0;border-radius:0;background:transparent;color:#ddd5c4;font:30px Georgia,serif;box-shadow:none;text-shadow:0 1px #000}#resumeTop{font-size:19px!important}.screen{min-height:calc(100dvh - 38px)}[hidden]{display:none!important}.main-screen{padding:30px 25px 14px;text-align:center}.main-mark{padding:4px 0 26px;color:#f4e8cc;text-shadow:0 3px 3px #1c160f}.main-mark>span{display:block;font:70px Georgia,serif;line-height:.8;color:#f4d58b}.main-mark strong{display:block;font:bold 38px Georgia,serif;letter-spacing:2px;margin-top:13px}.main-mark small{display:block;font:12px Georgia,serif;letter-spacing:1px;margin-top:4px}.main-buttons{max-width:300px;margin:auto;display:grid;gap:8px}.main-buttons button{font-weight:bold;font-size:17px;min-height:48px}.edition{font-size:10px;color:#ddd0b7;text-shadow:0 1px #000;margin:25px 0 5px}.form-screen{padding:18px 18px 30px;background:linear-gradient(#efebdfef,#ddd6c6ef);color:#29251e}.form-screen h2{font:21px Georgia,serif;margin:5px 0 15px}.form-screen fieldset{border:1px solid #9e9580;border-radius:4px;margin:17px 0;padding:13px 12px}.form-screen legend{font:bold 16px Georgia,serif;padding:0 7px}.form-screen p{font-size:13px}.field{display:grid;gap:6px;margin:12px 0;font-size:13px}.field select,.field input:not([type=range]),.name-row input{padding:8px 9px;width:100%;min-height:38px;background:#fdfaf2;color:#28231c;border:1px solid #8f8775;border-radius:3px}.field input[type=range]{width:100%;accent-color:#526546}.button-options{display:flex;gap:12px;flex-wrap:wrap;margin:4px 0 14px}.button-options:last-child{margin-bottom:0}.button-options label,.variant-checks label,.check-line,.button-radio{display:flex;align-items:center;gap:7px;font-size:14px}.button-radio{margin:13px 0}.check-line{margin:14px 0}.check-line input,.variant-checks input,.button-options input{accent-color:#4d6547;width:17px;height:17px;flex:0 0 17px}.variant-checks{display:grid;grid-template-columns:1fr 1fr;gap:14px 10px}.wide{display:block;width:100%;margin:9px 0}.button-row{display:flex;gap:6px;margin:9px 0}.button-row>*{flex:1;font-size:12px;padding:6px;min-width:0}.start-button{font-weight:bold;font-size:20px;min-height:49px}.done-button{font-weight:bold;margin-top:22px}.small{font-size:12px!important}.muted{color:#685f4c}.overview{display:flex;justify-content:space-around;text-align:center;gap:10px;margin:3px 0 15px;padding:11px 7px;border:1px solid #ac9d7f;background:#ddd4bfa8;font-size:11px}.overview strong{display:block;font:bold 24px Georgia,serif;color:#4d3b25}.rate-grid,.thresholds{display:grid;grid-template-columns:1fr 1fr;gap:12px}.thresholds{grid-template-columns:repeat(3,1fr);gap:6px}.thresholds .field{font-size:11px}.points-table{width:100%;border-collapse:collapse;font-size:13px;background:#f2eddf80}.points-table td,.points-table th{border:1px solid #b2a78f;text-align:center;padding:9px 5px}.points-table th{background:#c9bfa95c}.table-scroll{overflow:auto}.stats-summary{margin:10px 0 20px;font-size:13px}.name-row{display:grid;grid-template-columns:1fr auto;align-items:end;gap:8px;margin:12px 0}.name-row .field{margin:0}.name-row button{font-size:12px}.range-ends{display:flex;justify-content:space-between;font-size:10px;color:#81755e;margin-top:-9px}.scale-preview{min-height:220px;background:url('wood.svg') center/cover;border:1px solid #8a7c63;display:grid;place-items:center;padding:15px}.scale-preview>span{font:bold 20px Georgia,serif;color:white;text-shadow:0 1px #000}.scale-preview svg{width:100px}.file-label{position:relative;overflow:hidden;text-align:center;cursor:pointer;border:2px solid #171611;border-radius:6px;background:linear-gradient(#fff,#b3b3ad);padding:9px}.file-label input{position:absolute;inset:0;opacity:0;cursor:pointer}.parity-item{border-bottom:1px solid #b1a78e;padding:12px 0}.parity-item h3{font-size:14px;margin:0 0 5px}.parity-item p{margin:0;color:#655b48}.parity-status{font-size:10px;letter-spacing:.6px;margin-left:6px;font-family:Arial,sans-serif;color:#4f6540}.parity-status.open{color:#8b6335}output{font-size:11px;color:#71664d;margin-left:auto}
.game-screen{background:none}.table{min-height:620px;height:calc(100dvh - 38px);position:relative;overflow:hidden;background:inherit;isolation:isolate}.table-caption{position:absolute;top:5px;left:34px;right:34px;color:#faf3e0;text-align:center;font:bold 17px Georgia,serif;text-shadow:0 1px 2px #000;z-index:5;line-height:1.15}.table-tools{position:absolute;top:38px;right:6px;z-index:8;display:flex;gap:3px}.table-tools button{min-height:27px;min-width:27px;padding:1px 5px;border-width:1px;font-size:17px;line-height:1.1}.stock-badge{position:absolute;left:9px;top:35px;min-width:69px;background:radial-gradient(ellipse,#518d43,#1a4b29);border:1px solid #adbd7c;border-radius:9px 9px 27px 27px;text-align:center;box-shadow:0 2px 4px #0007;padding:6px 8px 11px;color:#e8e4bd;font-size:7px;z-index:5;text-shadow:0 1px #000}.stock-badge>strong{display:block;font:bold 20px Georgia,serif;color:#fff8e2}.stock-badge strong em{font:9px Arial}.stock-badge>span:last-of-type{display:block;margin-top:2px}.stock-badge small{display:block;font-size:8px;margin-top:3px}.seat{position:absolute;z-index:2;text-align:center;min-width:85px;color:white;text-shadow:0 1px #000}.seat strong{display:inline-block;position:relative;z-index:2;background:#435c9ae6;border-radius:2px;border:1px solid #d0d2d7a0;padding:1px 7px;font:bold calc(17px * var(--name-scale)) Georgia,serif;box-shadow:0 1px 2px #0007}.seat.current strong{background:#813e34;outline:1px solid #d3b26c}.seat small{display:block;font-size:8px;color:#eadfc9;margin:3px auto 0;max-width:130px;min-height:14px}.seat-top{left:50%;transform:translateX(-50%);top:95px}.seat-left{left:4px;top:33%}.seat-right{right:4px;top:33%}.mini-hand{display:flex;justify-content:center;margin-top:-19px;height:85px;padding-left:12px}.mini-hand svg{width:54px;height:81px;flex-shrink:0;margin-left:-40px;filter:drop-shadow(1px 2px 1px #0007)}.seat-left .mini-hand,.seat-right .mini-hand{flex-direction:column;width:66px;height:150px;padding-left:4px;margin:-20px auto 0;align-items:center;justify-content:flex-start}.seat-left .mini-hand svg,.seat-right .mini-hand svg{width:57px;height:85.5px;margin:0 0 -72px;transform:rotate(1deg)}.trick{position:absolute;z-index:3;inset:29% 20% 30%;pointer-events:none}.played{position:absolute;width:calc(77px * var(--card-scale));filter:drop-shadow(1px 3px 2px #0006)}.played svg{width:100%;display:block}.played.p0{left:calc(50% - 38px);bottom:0;transform:rotate(-4deg)}.played.p1{left:calc(50% - 85px);top:24%;transform:rotate(-12deg)}.played.p2{left:calc(50% - 31px);top:0;transform:rotate(5deg)}.played.p3{left:calc(50% + 9px);top:29%;transform:rotate(14deg)}.table-meta{position:absolute;top:70px;right:7px;text-align:right;color:#f3e7ce;font-size:8px;text-shadow:0 1px #000;display:grid;gap:2px;z-index:5;max-width:145px}#status{position:absolute;left:90px;right:65px;bottom:211px;z-index:4;text-align:center;color:#fff3d4;font:13px Georgia,serif;text-shadow:0 1px #000}.hand-panel{position:absolute;left:6px;right:6px;bottom:15px;z-index:5}.hand-heading{display:flex;align-items:center;gap:8px;margin-bottom:4px;color:#faf4e5}.hand-heading>strong{font:bold calc(17px * var(--name-scale)) Georgia,serif;background:#9c332bdd;padding:1px 7px;border-radius:3px;box-shadow:0 1px 2px #0007;text-shadow:0 1px #000}.hand-heading>span{font-size:9px}#handCount{margin-left:auto;text-shadow:0 1px #000}#practiceIndicator{background:#8c703c;padding:2px 5px}.hand{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:3px;min-height:90px;position:relative;align-items:start}.card{position:relative;padding:0;margin:0;border:0;border-radius:4px;background:none;box-shadow:none;width:100%;min-height:0;filter:drop-shadow(1px 2px 2px #0007);touch-action:none}.card svg{display:block;width:100%;border-radius:4px}.card:hover:not(:disabled){translate:none;background:none}.card:focus-visible{outline-offset:-3px}.card:disabled{opacity:1}.card.illegal{filter:brightness(.55)}#hint{font:9px Arial;color:#f2e4c9;text-shadow:0 1px #000;margin:4px 0 0;min-height:11px;text-align:right}.round-count{position:absolute;left:8px;bottom:2px;font-size:8px;color:#d9ceb8;text-shadow:0 1px #000}.hand.fan-hand{display:block;min-height:0}.hand.fan-hand .card{position:absolute;top:0}.auction-panel{position:absolute;left:50%;top:25%;transform:translateX(-50%);width:235px;max-width:67%;max-height:45%;overflow:auto;z-index:8;padding:0;border:0;background:none}.auction-panel h2{font:bold 16px Georgia,serif;text-align:center;color:#fff1d0;text-shadow:0 1px #000;margin:0 0 8px}.auction-panel p{font-size:9px;color:#f7e8c9;text-shadow:0 1px #000;text-align:center;margin:5px 0}.bid-type,.bid-choice{width:100%;margin:2px 0;font-weight:bold;font-size:14px;min-height:35px;padding:5px 7px}.bid-type.selected{background:linear-gradient(#f9f6e8,#aaa58e)}#bidTypes{display:grid;grid-template-columns:1fr 1fr;gap:1px 4px}#bidChoices{display:grid;grid-template-columns:1fr 1fr;gap:2px 3px}.bid-choice{font-size:12px;font-weight:normal}#passBid{font-weight:bold;min-height:39px;margin:3px 0}.tout-check{display:flex;justify-content:center;gap:6px;color:#eee7d2;font-size:10px;text-shadow:0 1px #000;margin:5px}.extra-actions{position:absolute;left:50%;top:23%;transform:translateX(-50%);z-index:9;display:flex;gap:5px}.extra-actions button{white-space:nowrap;font-weight:bold}.end-result{position:absolute;z-index:10;left:50%;top:27%;transform:translateX(-50%);width:290px;max-width:80%;max-height:48%;overflow:auto;background:#ddd8c9f0;border:2px solid #544b3d;border-radius:7px;box-shadow:0 4px 20px #0007;text-align:center;padding:13px 14px;color:#2c251c}.end-result h2{font:bold 23px Georgia,serif;margin:6px 0}.end-result p{font-size:12px;margin:8px 0}.end-result .eyebrow{font-size:11px}.end-result button{display:block;width:100%;margin:8px 0;min-height:35px}.end-result .result-players,.end-result .payout-detail{font-size:10px}.game-menu-open #status{opacity:.4}
dialog{border:2px solid #4b4336;border-radius:7px;padding:20px;background:#e8e2d3;color:#28231b;max-width:460px;width:calc(100% - 30px);max-height:88dvh;overflow:auto;box-shadow:0 7px 30px #0008}dialog::backdrop{background:#0009}dialog h2{font:bold 23px Georgia,serif;margin:0 20px 15px 0}dialog p{font-size:13px}.dialog-close{position:absolute;top:6px;right:6px;border:0;background:none;box-shadow:none;min-height:28px;padding:0 6px;font-size:24px;color:#615744}.dialog-buttons{display:grid;gap:7px}.last-trick-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.last-trick-cards svg{width:100%}.last-trick-cards strong{display:block;font-size:11px;text-align:center;margin-bottom:4px}.availability-note{font-size:10px!important;color:#805a2c;background:#d9c59b6b;border-left:2px solid #a18654;padding:5px 7px}.feature-pending{opacity:.65}.background-grey .app-frame{background-color:#777;background-blend-mode:luminosity}.background-green .app-frame{background:#245b40;background-image:radial-gradient(ellipse at 50% 30%,#387b54,#194733)}.background-green .form-screen{background:#e8e1cfea}
@media(min-width:601px){.app-frame{border-left:1px solid #74614a;border-right:1px solid #74614a}.hand{grid-template-columns:repeat(8,minmax(0,1fr))}.hand-panel{bottom:24px}#status{bottom:185px}.seat-top{top:110px}.seat-left{left:14px}.seat-right{right:14px}.auction-panel{top:26%;width:270px}.table-caption{font-size:19px}.played{width:calc(92px * var(--card-scale))}.trick{inset:29% 21% 28%}}
@media(max-height:740px){.main-screen{padding-top:20px}.main-mark{padding-bottom:20px}.main-mark strong{font-size:31px}.main-mark>span{font-size:57px}.main-buttons{gap:6px}.main-buttons button{min-height:41px;font-size:15px}.edition{margin-top:15px}.table{min-height:540px}.seat-top{top:84px}.hand{grid-template-columns:repeat(8,minmax(0,1fr))}.hand-panel{bottom:14px}#status{bottom:130px}.auction-panel{top:25%;max-height:48%}.trick{bottom:25%}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.table{transform:scale(var(--table-scale));transform-origin:top center}.show-arrows #hand:before{content:"↑";position:absolute;left:50%;top:-30px;color:#a9d18c;text-shadow:0 1px 2px #17271b;font-size:23px;pointer-events:none}.card{user-select:none;-webkit-user-select:none}.old-layout .card svg{border-radius:0}.last-trick-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.last-trick-cards svg{width:100%}

#bidTypes .bid-row{grid-column:1/-1;display:grid;grid-template-columns:1fr 58px;gap:0}#bidTypes .bid-row:has(button:only-child){grid-template-columns:1fr}.bid-row button{border-radius:5px;margin:1px 0;font-weight:bold;font-size:14px;min-height:35px;padding:5px}.bid-row button+button{border-left:0}.back-bid{grid-column:1/-1;margin-top:5px;font-size:12px}.bid-choice{min-height:42px}
/* Roles stay above the card stacks, including the compact side seats. */
.seat strong .seat-role,.seat strong .turn-marker{display:block;font:bold 12px/1.3 Arial,sans-serif;letter-spacing:.2px;padding:2px 0;text-shadow:none}.seat strong .seat-role{color:#ffdf7c}.seat strong .turn-marker{color:#fff;background:#255335;border-top:1px solid #ffffff66;margin:2px -6px -1px;padding:3px 6px}.seat.declarer strong,.hand-heading>strong.declaring{border:2px solid #f5cb58}.hand-heading>strong.your-turn{outline:3px solid #b6e9a7;outline-offset:2px}.table-caption{line-height:1.3;font-size:17px}.seat small{position:relative;z-index:3}
/* Equal first-half actions, independent of the bid-choice layout. */
.auction-panel.knocking-panel{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:310px;max-width:calc(100% - 24px);padding:14px}.knocking-panel h2,.knocking-panel #bidContext{grid-column:1/-1;margin:0 0 5px}.knocking-panel #bidTypes{display:none}.knocking-panel #bidChoices{display:contents}.knocking-panel #bidChoices button,.knocking-panel #passBid{width:100%;min-height:48px;margin:0;padding:8px 5px;font:bold 14px/1.2 Arial,sans-serif;border-radius:6px}
@media(max-width:600px),(max-height:500px){
 .app-frame{min-height:100svh}#appHeader{height:34px}#screenTitle{font-size:17px}.table{height:calc(100svh - 34px);min-height:0;transform:none}.table-caption{top:7px;left:70px;right:70px;font:700 14px/1.25 Arial,sans-serif}.stock-badge{transform:scale(.72);transform-origin:top left}.seat{min-width:65px;max-width:100px}.seat strong{font-size:14px;padding:3px 7px}.seat-money{display:none}.seat strong .seat-role,.seat strong .turn-marker{font-size:11px;padding:1px 0}.seat small{font-size:10px;margin:3px 0;min-height:0}.seat-top{top:76px}.seat-left,.seat-right{top:33%}.seat-left{left:5px}.seat-right{right:5px}.seat .mini-hand{margin:4px auto 0!important;padding:0;width:56px;height:40px;flex-direction:row!important;align-items:flex-start;justify-content:center}.seat .mini-hand svg{display:none}.seat .mini-hand svg:first-child{display:block;width:27px;height:40px;margin:0;transform:rotate(-7deg)}.seat .mini-hand svg:nth-child(2){display:block;width:27px;height:40px;margin-left:-19px;transform:rotate(7deg)}.trick{inset:28% 20% 29%}.played{width:72px}.played.p0{left:calc(50% - 36px)}.played.p1{left:calc(50% - 78px)}.played.p2{left:calc(50% - 31px)}.played.p3{left:calc(50% + 3px)}.hand-panel{left:7px;right:7px;bottom:calc(22px + env(safe-area-inset-bottom,0px))}.hand-heading{gap:5px;margin-bottom:6px;flex-wrap:wrap}.hand-heading>strong{font-size:13px;padding:3px 5px}.hand-heading>span{font-size:10px}.hand{min-height:0}.hand.fan-hand .card{border-radius:5px;filter:drop-shadow(-1px 1px 2px #0007)}#status{left:12px;right:12px;bottom:calc(184px + env(safe-area-inset-bottom,0px));font:700 12px/1.2 Arial,sans-serif;background:#2d231aa8;border-radius:10px;width:fit-content;max-width:calc(100% - 24px);margin:auto;padding:5px 10px}.table-footer{font-size:9px}.auction-panel{top:29%;max-height:42%;width:270px;overflow:auto}.auction-panel.knocking-panel{top:31%;width:310px}.extra-actions{top:23%;z-index:10}.extra-actions button{min-height:36px;font-size:12px}.end-result{top:26%;max-height:43%;padding:8px 12px}.end-result p{margin:5px 0}#hint{font-size:10px;line-height:1.25}.show-arrows #hand:before{display:none}
}
@media(max-width:600px) and (max-height:700px){.seat-top{top:68px}.seat-left,.seat-right{top:31%}.seat .mini-hand{display:none}.played{width:63px}.trick{inset:26% 20% 33%}#status{bottom:177px}.auction-panel.knocking-panel{top:27%}.table-caption{font-size:13px}}
@media(max-height:500px) and (min-width:601px){.app-frame{max-width:none}.seat-top{top:52px}.seat-left,.seat-right{top:34%}.hand-panel{left:25%;right:25%;bottom:18px}.seat .mini-hand{display:none}.trick{inset:17% 33% 40%}.played{width:61px}.auction-panel,.auction-panel.knocking-panel{top:24%;max-height:42%}#status{bottom:157px}.extra-actions{top:16%}.table-caption{font-size:14px}}
html,body{touch-action:pan-x pan-y}button,a,input,select{touch-action:manipulation}
@media(max-width:600px),(max-height:500px){#repeatButton,#settingsButton{display:none}.table-tools{top:39px}.table-tools button{min-height:38px;min-width:38px}.form-screen input,.form-screen select{font-size:16px}.table-meta{top:82px}}
.seat strong,.hand-heading>strong{position:relative}.placed-coin{display:inline-flex!important;align-items:center;justify-content:center;position:absolute!important;right:-12px;bottom:-11px;width:25px;height:25px;z-index:8;border:2px solid #8b5c08;border-radius:50%;background:radial-gradient(circle at 35% 25%,#fff1a3,#e4b536 55%,#ab720c);color:#704707!important;font:bold 16px/1 Georgia,serif!important;text-shadow:0 1px #fff3b4!important;box-shadow:inset 0 0 0 2px #ffe281,1px 2px 3px #0008;padding:0!important;margin:0!important}.show-arrows #hand:before{display:block!important;left:auto;right:10px;top:-39px;width:30px;height:30px;line-height:30px;text-align:center;border-radius:50%;background:#204127;color:#b8ff91;font-size:26px;z-index:8;pointer-events:none}.hand-heading{padding-right:44px}.seat .placed-coin{right:-10px;bottom:-9px}
.player-eyes{display:block;font:700 12px/1.3 Arial,sans-serif;color:#fffbe8;background:#233c2ac9;border-radius:3px;margin-top:3px;padding:2px 5px;text-shadow:none}.seat strong .player-eyes{font-size:12px}.hide-eyes .player-eyes{display:none!important}
@media(max-width:600px){.seat-name{display:block;max-width:85px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
.hand .card.illegal{filter:brightness(.48) saturate(.65) drop-shadow(1px 2px 2px #0007)}.no-darken .hand .card.illegal{filter:drop-shadow(1px 2px 2px #0007)}.last-trick-peek{position:absolute;z-index:30;top:46%;left:50%;transform:translate(-50%,-50%);width:min(350px,calc(100% - 20px));padding:12px;background:#e9e1cff7;border:2px solid #a78d58;border-radius:9px;box-shadow:0 5px 24px #0009;pointer-events:none;color:#282116;text-align:center}.last-trick-peek h2{font:bold 20px Georgia,serif;margin:0 0 5px}.last-trick-peek p{font-size:12px;margin:4px 0 10px}.last-trick-peek small{display:block;font-size:11px;margin-top:8px}.last-trick-peek .last-trick-cards{gap:5px}.last-trick-peek .last-trick-cards strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
