:root{--felt: #1f6b46;--felt-edge: #155134;--brass: #c9a227;--brass-deep: #8a6d12;--ivory: #f6f1e4;--ink: #17140f;--suit-red: #a8201a;--suit-black: #1b1a17;--line: rgba(23, 20, 15, .18);--focus: #ffd84d;--card-w-max: 104px;--card-w: min(var(--card-w-max), max(calc((100dvh - 574px) / 4.04), 75px));--card-h: calc(var(--card-w) * 1.4);--card-r: calc(var(--card-w) * .05);--felt-strip-w: 168px;--felt-strip-h: calc(var(--card-w) * .98 + 88px);--felt-seat-h: calc(var(--felt-strip-h) + var(--gap-2) + var(--card-h) * var(--card-scale-compact));--felt-centre-h: calc(var(--card-w) * 1.96 + 50px);--felt-mid-h: max(var(--felt-seat-h), var(--felt-centre-h));--felt-lift: max(0px, calc(var(--card-h) * .5 - var(--gap-2) - var(--gap-4)));--felt-board-h: calc(max(calc(var(--card-h) + var(--gap-5) + var(--gap-2) * 2), var(--felt-strip-h)) + var(--felt-lift));--felt-border-h: 4px;--felt-k-2: 4.04;--felt-c-2: 202px;--felt-k-3: 6;--felt-c-3: 298px;--felt-k-4: 6;--felt-c-4: 298px;--felt-k: var(--felt-k-2);--felt-c: var(--felt-c-2);--shell-fixed-h: 104px;--plate-max-h: 248px;--felt-min-h: calc(var(--card-w) * var(--felt-k) + var(--felt-c));--chip-scale: .16;--card-scale-compact: .7;--card-scale-last-trick: .5;--gap-1: 4px;--gap-2: 8px;--gap-3: 16px;--gap-4: 24px;--gap-5: 40px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 18px;--shadow-card: 0 1px 2px rgba(23, 20, 15, .35), 0 3px 8px rgba(23, 20, 15, .22);--shadow-lift: 0 2px 6px rgba(23, 20, 15, .28), 0 12px 32px rgba(23, 20, 15, .35);--z-table: 0;--z-card: 1;--z-dialog: 10;--z-toast: 20;--font-ui: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-score: ui-monospace, "SF Mono", "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;--fs-1: 12px;--fs-2: 14px;--fs-3: 16px;--fs-4: 20px;--fs-5: 28px;--dur: .18s}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--felt-edge);color:var(--ivory);font-family:var(--font-ui)}.app{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,320px);grid-template-areas:"table scorebook";gap:var(--gap-3);padding:var(--gap-3);min-height:100vh;min-height:100dvh;font-family:var(--font-ui);font-size:var(--fs-3);color:var(--ivory)}.app[data-screen=game]{--felt-k: var(--felt-k-2);--felt-c: var(--felt-c-2);--felt-min-h: calc(var(--card-w) * var(--felt-k) + var(--felt-c));grid-template-areas:"header header" "table scorebook" "strip scorebook" "error error";grid-template-rows:auto minmax(calc(var(--felt-min-h) + 4px),1fr) auto auto;height:100vh;height:100dvh}.app[data-screen=game]:has(.table[data-seats="3"]){--felt-k: var(--felt-k-3);--felt-c: var(--felt-c-3)}.app[data-screen=game]:has(.table[data-seats="4"]){--felt-k: var(--felt-k-4);--felt-c: var(--felt-c-4)}.game-header{grid-area:header;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--gap-2)}.game-title{margin:0;font-size:var(--fs-4);letter-spacing:.02em}.game-phase{margin:0;font-size:var(--fs-2);letter-spacing:.05em;text-transform:uppercase;opacity:.85}.play-strip{grid-area:strip;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--gap-2)}.table{grid-area:table;position:relative;z-index:var(--z-table);display:grid;gap:var(--gap-3);grid-template-columns:minmax(0,auto) minmax(calc(var(--card-w) + var(--gap-3) * 2),1fr) minmax(0,auto);grid-template-rows:auto minmax(var(--felt-mid-h),1fr) minmax(var(--felt-board-h),auto);grid-template-areas:". top ." "left centre right" "hand hand hand";align-content:stretch;justify-content:stretch;padding:var(--gap-4);border:2px solid var(--brass-deep);border-radius:var(--radius-lg);background:radial-gradient(120% 100% at 50% 35%,var(--felt),var(--felt-edge));box-shadow:inset 0 0 var(--gap-5) var(--felt-edge),var(--shadow-lift);color:var(--ivory)}.table[data-seats="3"],.table[data-seats="4"]{grid-template-rows:minmax(var(--felt-seat-h),auto) minmax(var(--felt-mid-h),1fr) minmax(var(--felt-board-h),auto)}.scorebook{grid-area:scorebook;padding:var(--gap-3);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--ivory);color:var(--ink);font-family:var(--font-score);font-variant-numeric:tabular-nums;font-size:var(--fs-2);box-shadow:var(--shadow-lift);min-height:0;overflow-y:auto}.card-sprite{position:absolute;width:0;height:0;overflow:hidden}.card-face{display:block;width:var(--card-w);height:var(--card-h)}.card-face--small{width:calc(var(--card-w) * var(--card-scale-compact));height:calc(var(--card-h) * var(--card-scale-compact))}.card-face--last-trick{width:calc(var(--card-w) * var(--card-scale-last-trick));height:calc(var(--card-h) * var(--card-scale-last-trick))}.card-face .brass-badge{fill:var(--brass);stroke:var(--brass-deep);stroke-width:1}.card-face .brass-label{font-family:var(--font-ui);font-size:19.2px;font-weight:600;fill:var(--ink)}.card{position:relative;z-index:var(--z-card);width:var(--card-w);height:var(--card-h);border-radius:var(--card-r);box-shadow:var(--shadow-card)}.card--small{width:calc(var(--card-w) * var(--card-scale-compact));height:calc(var(--card-h) * var(--card-scale-compact))}.card--last-trick{width:calc(var(--card-w) * var(--card-scale-last-trick));height:calc(var(--card-h) * var(--card-scale-last-trick))}.card[data-state=played]{box-shadow:0 0 0 1px var(--brass-deep),var(--shadow-card)}.card[data-state=won]{box-shadow:0 0 0 2px var(--brass-deep),var(--shadow-card)}.card[data-state=selected]{box-shadow:0 0 0 2px var(--brass),var(--shadow-card)}.card-back{display:block;width:var(--card-w);height:var(--card-h)}.card--small .card-back{width:calc(var(--card-w) * var(--card-scale-compact));height:calc(var(--card-h) * var(--card-scale-compact))}.card--last-trick .card-back{width:calc(var(--card-w) * var(--card-scale-last-trick));height:calc(var(--card-h) * var(--card-scale-last-trick))}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;white-space:nowrap;clip-path:inset(50%)}:focus-visible{outline:3px solid var(--focus);outline-offset:var(--gap-1);box-shadow:0 0 0 var(--gap-1) var(--ink)!important}[hidden]{display:none!important}@media (prefers-reduced-motion: reduce){:root{--dur: 0ms}*,*:before,*:after{transition-duration:0ms!important;transition-delay:0ms!important}}.reduce-motion{--dur: 0ms}.reduce-motion *,.reduce-motion *:before,.reduce-motion *:after{transition-duration:0ms!important;transition-delay:0ms!important}.hand{display:flex;justify-content:center;align-items:flex-end;margin:0;padding:calc(var(--gap-5) + var(--gap-2)) var(--gap-2) var(--gap-2);list-style:none}.hand-card{--fan-step: 2deg;--fan-arc: 1.2px;--fan-offset: calc(var(--i) - (var(--n) - 1) / 2);position:relative;z-index:var(--z-card);transform:translateY(calc(-1 * var(--fan-offset) * var(--fan-offset) * var(--fan-arc))) rotate(calc(var(--fan-offset) * var(--fan-step)));transition:transform var(--dur) ease-out}.hand-card+.hand-card{margin-inline-start:calc(var(--card-w) * -.25)}.hand-card:has(.hand-play:focus-visible),.hand-card:has(.card[data-state=selected]){z-index:calc(var(--z-card) + 1)}.hand-play{display:block;min-width:var(--card-w);min-height:var(--card-h);padding:0;border:0;background:none;border-radius:var(--card-r);cursor:pointer}.hand-play:disabled{cursor:not-allowed}.hand-region[data-hand=play] .hand-play:disabled{opacity:.55}.options{display:grid;gap:var(--gap-3)}.option-list{display:grid;gap:var(--gap-2);margin:0;padding:0;list-style:none}.option{display:grid;grid-template-columns:minmax(120px,180px) minmax(0,1fr);align-items:center;gap:var(--gap-1) var(--gap-3)}.option-label{display:flex;align-items:center;min-height:44px;font-size:var(--fs-2)}.option-body{display:grid;gap:var(--gap-1)}.option-control{min-width:44px;min-height:44px;max-width:320px;padding:var(--gap-2);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--ivory);color:var(--ink);font-family:var(--font-ui);font-size:var(--fs-2);accent-color:var(--brass-deep)}.option-control[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0;width:44px;height:44px;border:0;background:none;cursor:pointer}.option-body:has(.option-check){grid-template-columns:44px minmax(0,1fr)}.option-body:has(.option-check) .option-hint{grid-column:1 / -1}.option-control[type=checkbox],.option-check{grid-area:1 / 1 / 2 / 2}.option-check{position:relative;width:22px;height:22px;border:2px solid var(--ivory);border-radius:var(--radius-sm);justify-self:center;align-self:center;pointer-events:none}.option-control[type=checkbox]:checked+.option-check{background:var(--brass)}.option-check:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:12px;height:3px;border-radius:1px;background:var(--ink);transform:rotate(-45deg);opacity:0}.option-control[type=checkbox]:checked+.option-check:after{opacity:1}.option-hint{margin:0;font-size:var(--fs-1);color:var(--ivory)}.config-issues{display:grid;gap:var(--gap-1);padding:var(--gap-2) var(--gap-3);border:2px solid var(--brass);border-radius:var(--radius-md);font-size:var(--fs-2);color:var(--ivory)}.config-issues p{margin:0}.seat{display:grid;gap:var(--gap-2);justify-items:center;align-content:safe center}.table[data-human-seat="0"] .seat[data-seat="0"],.table[data-human-seat="1"] .seat[data-seat="1"],.table[data-human-seat="2"] .seat[data-seat="2"],.table[data-human-seat="3"] .seat[data-seat="3"]{grid-area:hand;width:var(--felt-strip-w);grid-template-columns:minmax(0,1fr);justify-self:end;align-self:end}.table[data-human-seat="0"] .seat[data-seat="1"],.table[data-human-seat="1"] .seat[data-seat="2"],.table[data-human-seat="2"] .seat[data-seat="3"],.table[data-human-seat="3"] .seat[data-seat="0"]{grid-area:left}.table[data-human-seat="0"] .seat[data-seat="2"],.table[data-human-seat="1"] .seat[data-seat="3"],.table[data-human-seat="2"] .seat[data-seat="0"],.table[data-human-seat="3"] .seat[data-seat="1"]{grid-area:top}.table[data-human-seat="0"] .seat[data-seat="3"],.table[data-human-seat="1"] .seat[data-seat="0"],.table[data-human-seat="2"] .seat[data-seat="1"],.table[data-human-seat="3"] .seat[data-seat="2"]{grid-area:right}.table-centre{grid-area:centre;display:grid;gap:var(--gap-4);grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;grid-template-areas:"stock chip" "stock trick";justify-items:center;align-content:safe center}.trump-chip{grid-area:chip;display:flex;align-items:center;gap:.4em;padding:.35em .8em;border:2px solid var(--brass);border-radius:var(--card-r);background:var(--ivory);box-shadow:var(--shadow-card);font-size:calc(var(--card-w) * var(--chip-scale));font-weight:700;letter-spacing:.06em;line-height:1;text-transform:uppercase}.trump-chip[data-trump=H],.trump-chip[data-trump=D]{color:var(--suit-red)}.trump-chip[data-trump=S],.trump-chip[data-trump=C]{color:var(--suit-black)}.trump-chip-label{color:var(--brass-deep)}.trump-chip-glyph{font-size:1.25em;line-height:1}.table>.hand-region{grid-area:hand;padding-inline-end:calc(var(--felt-strip-w) + var(--gap-1))}.seat-strip{display:grid;grid-template-columns:repeat(3,auto);gap:var(--gap-1) var(--gap-2);padding:var(--gap-2) var(--gap-3);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--felt-edge);font-size:var(--fs-1);text-align:center;transition:border-color var(--dur) ease-out,box-shadow var(--dur) ease-out}.seat-name{grid-column:span 3;font-size:var(--fs-2);font-weight:600}.seat-fact{display:grid;gap:0}.seat-value{font-family:var(--font-score);font-variant-numeric:tabular-nums;font-size:var(--fs-3)}.seat-unit{font-size:var(--fs-1);opacity:.75}.seat-strip[data-on-turn=true]{border-color:var(--brass)}.seat-strip[data-thinking]{border-color:var(--brass);box-shadow:0 0 0 2px var(--brass-deep)}.won-tricks{grid-column:span 3;display:flex;justify-content:center;margin:0;padding:0;min-height:calc(var(--card-h) * var(--card-scale-compact));list-style:none}.won-tricks>li+li{margin-inline-start:calc(min(var(--card-w) * .15,(100% - var(--card-w) * var(--card-scale-compact)) / (var(--n) - 1)) - var(--card-w) * var(--card-scale-compact))}.seat-hand{display:flex;justify-content:center}.seat-hand .card+.card{margin-inline-start:calc(var(--card-w) * var(--card-scale-compact) * -.6)}.stock{grid-area:stock;align-self:center;display:grid;gap:var(--gap-2);justify-items:center;font-size:var(--fs-2)}.stock-count{margin:0;font-family:var(--font-score);font-variant-numeric:tabular-nums}.stock-indicator{position:relative}.cover{position:absolute;top:0;right:0;bottom:35%;left:0;border-radius:var(--card-r);background:var(--felt-edge);box-shadow:var(--shadow-card);transform:rotate(5deg)}.stock-indicator[data-trump-indicator] .card{box-shadow:0 0 0 2px var(--brass-deep),var(--shadow-card)}.out-of-play{display:grid;gap:var(--gap-1);justify-items:center}.out-of-play .card{opacity:.8}.out-of-play-label{font-size:var(--fs-1);opacity:.75}.trick{grid-area:trick;display:grid;justify-items:center;gap:var(--gap-2);width:fit-content;min-width:max(100%,calc(var(--card-w) * var(--card-scale-compact) + var(--gap-3) * 2));min-height:calc(var(--card-h) * var(--card-scale-compact) + var(--gap-3) * 2);padding:var(--gap-3);border:1px solid var(--line);border-radius:var(--radius-md)}.trick-live{display:flex;justify-content:center;align-items:flex-end;gap:var(--gap-3)}.trick-play{display:grid;gap:var(--gap-1);justify-items:center;font-size:var(--fs-1)}.trick[data-last-winner]{border-color:var(--brass-deep)}.last-trick-band{display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:var(--gap-2);width:fit-content;min-width:max(100%,calc(var(--card-w) * var(--card-scale-last-trick) + var(--gap-3) * 2));padding-top:var(--gap-2);border-top:1px dashed var(--line);opacity:.62}.table[data-seats="3"] .last-trick-band,.table[data-seats="4"] .last-trick-band{gap:var(--gap-1);padding-top:0}.table[data-seats="3"] .last-trick-label,.table[data-seats="4"] .last-trick-label{flex:0 0 auto;align-self:center}.table[data-seats="3"] .trick,.table[data-seats="4"] .trick{gap:var(--gap-1);padding:var(--gap-2)}.last-trick-label{flex:0 0 100%;text-align:center;font-size:var(--fs-1)}.last-trick-play{display:grid;gap:var(--gap-1);justify-items:center;font-size:var(--fs-1)}.last-trick-play[data-winner] .card{box-shadow:0 0 0 2px var(--brass-deep),var(--shadow-card)}.last-trick-play[data-bela] .card{box-shadow:0 0 0 2px var(--brass),var(--shadow-card)}.last-trick-play[data-bela][data-winner] .card{box-shadow:0 0 0 2px var(--brass),0 0 0 4px var(--brass-deep),var(--shadow-card)}.dialog{position:relative;z-index:var(--z-dialog);display:grid;gap:var(--gap-2);padding:var(--gap-3);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--ivory);color:var(--ink);font-size:var(--fs-3);box-shadow:var(--shadow-lift);transition:box-shadow var(--dur) ease-out}.dialog-title{margin:0;font-size:var(--fs-4);font-weight:600}.dialog-actions{display:flex;flex-wrap:wrap;gap:var(--gap-2)}.dialog-button{min-width:44px;min-height:44px;padding:var(--gap-2) var(--gap-3);border:1px solid var(--brass-deep);border-radius:var(--radius-sm);background:var(--brass);color:var(--ink);font-family:var(--font-ui);font-size:var(--fs-3);cursor:pointer;transition:background-color var(--dur) ease-out,box-shadow var(--dur) ease-out}.dialog-button:hover:not(:disabled){background:var(--ivory)}.dialog-button--claim{border-width:2px;border-color:var(--brass-deep)}.claim-points{font-family:var(--font-score);font-variant-numeric:tabular-nums}.claim-risk{margin:var(--gap-1) 0 0;color:var(--brass-deep);font-size:var(--fs-1);letter-spacing:.03em}.shown-runs{display:flex;flex-wrap:wrap;gap:var(--gap-1) var(--gap-2);margin:0;padding:0;list-style:none;font-size:var(--fs-2)}.shown-run-card{padding:var(--gap-1) var(--gap-2);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--felt-edge);color:var(--ivory)}.bela{display:flex;align-items:center;gap:var(--gap-2);margin:0}.bela-label{display:flex;align-items:center;min-height:44px;font-size:var(--fs-2)}.bela-tick{width:44px;height:44px;accent-color:var(--brass-deep)}.scorebook-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--gap-2);padding-bottom:var(--gap-2);border-bottom:1px solid var(--line)}.scorebook-title{margin:0;font-size:var(--fs-3);letter-spacing:.05em;text-transform:uppercase}.scorebook-target{display:flex;align-items:baseline;gap:var(--gap-1);margin:0;font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.05em}.target-value{font-variant-numeric:tabular-nums;color:var(--brass-deep)}.score-rows{display:grid;gap:var(--gap-1);margin:var(--gap-2) 0 var(--gap-3);padding:0;list-style:none}[data-scorebook-numbers]{font-variant-numeric:tabular-nums}.score-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:baseline;gap:var(--gap-2);padding:var(--gap-1) var(--gap-2);border-radius:var(--radius-sm);transition:background-color var(--dur) ease-out,box-shadow var(--dur) ease-out}.score-row[data-leader]{box-shadow:inset 0 0 0 1px var(--brass-deep)}.score-seat{font-size:var(--fs-2)}.score-value{font-variant-numeric:tabular-nums;text-align:right;font-size:var(--fs-3)}.score-row[data-leader] .score-value{color:var(--brass-deep)}.score-team{font-size:var(--fs-1);letter-spacing:.04em;text-transform:uppercase}.score-marker{grid-column:1 / -1;padding:0 var(--gap-1);border:1px solid var(--brass-deep);border-radius:var(--radius-sm);color:var(--brass-deep);font-size:var(--fs-1);letter-spacing:.05em;text-transform:uppercase}.score-history{padding-top:var(--gap-2);border-top:1px solid var(--line)}.history-title{margin:0 0 var(--gap-2);font-size:var(--fs-1);letter-spacing:.05em;text-transform:uppercase}.history-list,.breakdown-list,.award-list{display:grid;gap:var(--gap-1);margin:0;padding:0;list-style:none}.history-row{display:grid;gap:var(--gap-1);padding:var(--gap-2) 0;border-top:1px solid var(--line)}.history-hand{font-size:var(--fs-1);letter-spacing:.04em;text-transform:uppercase}.breakdown-row{display:grid;grid-template-columns:minmax(0,1fr) repeat(6,auto);align-items:baseline;gap:var(--gap-1)}.breakdown-seat{font-size:var(--fs-1)}.breakdown-cell{font-variant-numeric:tabular-nums;text-align:right}.history-cols{display:grid;grid-template-columns:minmax(0,1fr) repeat(6,auto);gap:var(--gap-1);font-size:var(--fs-1);letter-spacing:.04em;text-transform:uppercase;color:var(--ink);opacity:.7}.history-col{font-family:var(--font-score);text-align:right}.history-col:nth-child(2),.history-col:nth-child(3),.history-col:nth-child(4),.history-col:nth-child(6),.breakdown-cell:nth-child(2),.breakdown-cell:nth-child(3),.breakdown-cell:nth-child(4),.breakdown-cell:nth-child(6){min-width:31px}.history-col:nth-child(5),.history-col:nth-child(7),.breakdown-cell:nth-child(5),.breakdown-cell:nth-child(7){min-width:39px}.award-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:var(--gap-2)}.award-seat{font-size:var(--fs-1)}.award-value{font-variant-numeric:tabular-nums;text-align:right}.history-markers{display:flex;flex-wrap:wrap;gap:var(--gap-1)}.history-marker{padding:0 var(--gap-1);border:1px solid var(--brass-deep);border-radius:var(--radius-sm);color:var(--brass-deep);font-size:var(--fs-1);letter-spacing:.05em;text-transform:uppercase}.history-marker--value{font-family:var(--font-score);font-variant-numeric:tabular-nums;text-transform:none;letter-spacing:0}.history-marker-unit{margin-inline-start:var(--gap-1);font-size:var(--fs-1);text-transform:none;letter-spacing:0}.scorebook-drawer{display:grid;gap:var(--gap-2);padding:var(--gap-2)}.scorebook-toggle{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-2);min-width:44px;min-height:44px;padding:var(--gap-2) var(--gap-3);border:1px solid var(--brass-deep);border-radius:var(--radius-sm);background:var(--brass);color:var(--ink);font-family:var(--font-ui);font-size:var(--fs-2);letter-spacing:.05em;text-transform:uppercase;cursor:pointer;transition:background-color var(--dur) ease-out,box-shadow var(--dur) ease-out}.scorebook-toggle:hover{background:var(--ivory)}.scorebook-panel{display:grid;gap:var(--gap-2)}.game-over{display:grid;gap:var(--gap-3);padding:var(--gap-3);border-radius:var(--radius-md);background:var(--ivory);color:var(--ink);box-shadow:var(--shadow-lift);transition:box-shadow var(--dur) ease-out}.game-over-title{margin:0;font-size:var(--fs-5);letter-spacing:.02em}.game-over-target{display:flex;align-items:baseline;gap:var(--gap-1);margin:calc(-1 * var(--gap-2)) 0 0;font-size:var(--fs-1);letter-spacing:.05em;text-transform:uppercase}.final-scores{display:grid;gap:var(--gap-1);margin:0;padding:0;list-style:none;font-variant-numeric:tabular-nums}.final-score{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:baseline;gap:var(--gap-2);padding:var(--gap-1) var(--gap-2);border-radius:var(--radius-sm);transition:background-color var(--dur) ease-out,box-shadow var(--dur) ease-out}.final-score[data-winner-seat]{box-shadow:inset 0 0 0 2px var(--brass-deep)}.final-seat{font-size:var(--fs-2)}.final-value{font-variant-numeric:tabular-nums;text-align:right;font-size:var(--fs-4)}.final-score[data-winner-seat] .final-value{color:var(--brass-deep)}.final-team{font-size:var(--fs-1);letter-spacing:.04em;text-transform:uppercase}.game-over-actions{display:flex;flex-wrap:wrap;gap:var(--gap-2)}.start-screen{grid-area:1 / 1 / 2 / 3;display:grid;gap:var(--gap-3);align-content:start}.start-title{margin:0;font-size:var(--fs-5);letter-spacing:.02em}.start-form{display:grid;gap:var(--gap-3);align-content:start}.picker{display:grid;align-content:start;gap:var(--gap-1);margin:0;padding:var(--gap-2);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--felt-edge);max-width:380px}.picker-title{font-size:var(--fs-1);letter-spacing:.05em;text-transform:uppercase}.picker-option{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:var(--gap-2)}.picker-control,.picker-dot{grid-area:1 / 1 / 2 / 2}.picker-control{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;width:44px;height:44px;border:0;background:none;cursor:pointer}.picker-dot{width:22px;height:22px;border:2px solid var(--ivory);border-radius:50%;justify-self:center;align-self:center;pointer-events:none}.picker-control:checked+.picker-dot{background:var(--brass);box-shadow:inset 0 0 0 4px var(--felt-edge)}.picker-label{display:flex;align-items:center;min-height:44px;font-size:var(--fs-2)}.seed{display:grid;gap:var(--gap-1);max-width:320px}.seed-label{font-size:var(--fs-2)}.seed-field{min-height:44px;padding:var(--gap-2);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--ivory);color:var(--ink);font-family:var(--font-score);font-variant-numeric:tabular-nums;font-size:var(--fs-2)}.seed-error{grid-row:3;margin:0;padding:var(--gap-2) var(--gap-3);border:2px solid var(--brass);border-radius:var(--radius-md);font-size:var(--fs-2);color:var(--ivory)}.start-notice{margin:0;padding:var(--gap-2) var(--gap-3);border:2px solid var(--brass);border-radius:var(--radius-md);font-size:var(--fs-2);color:var(--ivory)}.picker-pair{display:grid;gap:var(--gap-3);grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.start-actions{display:flex;flex-wrap:wrap;gap:var(--gap-2);grid-row:3}:where(.start-form:has(.seed-error)) .start-actions{grid-row:4}.start-button{min-width:44px;min-height:44px;padding:var(--gap-2) var(--gap-4);border:1px solid var(--brass-deep);border-radius:var(--radius-sm);background:var(--brass);color:var(--ink);font-family:var(--font-ui);font-size:var(--fs-3);cursor:pointer;transition:background-color var(--dur) ease-out,box-shadow var(--dur) ease-out}.start-button:hover:not(:disabled){background:var(--ivory)}.start-button:disabled{opacity:.55;cursor:not-allowed}.game-over{grid-area:scorebook;min-height:0;overflow-y:auto}.dialog{grid-area:strip;justify-self:center;align-self:center;width:min(100%,46ch)}.game-error{grid-area:error;margin:0;padding:var(--gap-2) var(--gap-3);border:2px solid var(--brass);border-radius:var(--radius-md);font-size:var(--fs-2);color:var(--ivory)}:root{--bp-wide: 1100px;--bp-tablet: 820px;--bp-phone: 640px}@media (min-width: 1100px){.app[data-screen=game]{grid-template-columns:minmax(0,1fr) minmax(280px,360px)}.dialog{width:min(100%,74ch)}.table{min-height:0;overflow-y:auto}.hand{padding:calc(var(--gap-5) + var(--gap-2)) 0 var(--gap-2)}.hand-card+.hand-card{margin-inline-start:calc(min(var(--card-w) * .75,(100% - var(--card-w) * cos(calc((var(--n) - 1) * 1deg)) - var(--card-h) * sin(calc((var(--n) - 1) * 1deg))) / (var(--n) - 1)) - var(--card-w))}.start-form{grid-template-columns:minmax(0,1fr) minmax(300px,360px);grid-template-areas:"pickers seed" "options deal";align-items:start}.picker-pair{grid-area:pickers}.seed{grid-area:seed}.seed-error{grid-area:seed;align-self:end}.options{grid-area:options}.start-actions{grid-area:deal;align-self:end;position:sticky;bottom:var(--gap-3)}}@media (max-width: 1099.98px){.app{grid-template-columns:minmax(0,1fr);grid-template-areas:"start"}.app[data-screen=game]{grid-template-columns:minmax(0,1fr);grid-template-areas:"header" "table" "strip" "error" "scorebook";grid-template-rows:auto auto auto auto auto}.start-screen{grid-area:1 / 1 / 2 / 2}.scorebook{min-height:auto;overflow-y:visible}.hand-card+.hand-card{margin-inline-start:calc(min(var(--card-w) * .75,(100% - var(--card-w) * cos(calc((var(--n) - 1) * 1deg)) - var(--card-h) * sin(calc((var(--n) - 1) * 1deg))) / (var(--n) - 1)) - var(--card-w))}}@media (max-width: 819.98px){.app{--card-w: clamp(56px, 20vw, 104px);--card-h: calc(clamp(56px, 20vw, 104px)*1.4) ;--chip-scale: .2;gap:var(--gap-2);padding:var(--gap-2);overflow-x:hidden}.table{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto auto auto auto;grid-template-areas:"top top" "left right" "centre centre" "hand hand" "bottom bottom";gap:var(--gap-2);padding:var(--gap-2)}.table[data-human-seat="0"] .seat[data-seat="0"],.table[data-human-seat="1"] .seat[data-seat="1"],.table[data-human-seat="2"] .seat[data-seat="2"],.table[data-human-seat="3"] .seat[data-seat="3"]{grid-area:bottom;width:auto;justify-self:center;align-self:auto}.table>.hand-region{padding-inline:0}.trump-chip{font-size:calc(var(--card-w) * var(--chip-scale));padding:.3em .6em;gap:.35em}.trump-chip-label{display:none}.hand-card{--fan-arc: .75px}.hand{padding:calc(var(--gap-4) + var(--gap-2)) var(--gap-1) var(--gap-1)}.hand-card+.hand-card{margin-inline-start:calc(min(44px,(100% - var(--card-w) * cos(calc((var(--n) - 1) * 1deg)) - var(--card-h) * sin(calc((var(--n) - 1) * 1deg))) / (var(--n) - 1)) - var(--card-w))}.hand-play{min-width:44px;min-height:44px}.trick{gap:var(--gap-2);min-height:calc(var(--card-h) * var(--card-scale-compact) + var(--gap-2) * 2);padding:var(--gap-2)}.seat-strip{gap:0 var(--gap-1);padding:var(--gap-1) var(--gap-2)}.seat-strip,.seat-strip .seat-name{min-width:44px}.won-tricks{min-height:calc(var(--card-h) * var(--card-scale-compact))}.dialog-button,.scorebook-toggle{min-width:44px;min-height:44px}.scorebook-drawer{padding:var(--gap-2)}.scorebook-drawer[data-open=false] .scorebook-panel{display:none}.scorebook-panel{overflow-x:auto}}@media (max-width: 639.98px){.scorebook-drawer[data-open=true] .scorebook-panel{max-height:60vh;overflow-y:auto}.game-header{gap:var(--gap-2)}.game-title{font-size:var(--fs-3)}.start-actions,.game-over-actions,.dialog-actions,.play-strip{gap:var(--gap-2)}}.game-screen{display:contents}.hand-card.deal-stagger,.seat-hand.deal-stagger .card{transition:transform var(--dur) ease-out,opacity var(--dur) ease-out}[data-motion~=deal] .hand-card.deal-stagger{--deal-lift: calc(var(--card-h) * .5);transform:translateY(calc(-1 * var(--fan-offset) * var(--fan-offset) * var(--fan-arc) + var(--deal-lift))) rotate(calc(var(--fan-offset) * var(--fan-step)));opacity:.3;transition:transform var(--dur) ease-out,opacity var(--dur) ease-out;transition-delay:calc(var(--i) * var(--dur) / 3)}[data-motion~=deal] .seat-hand.deal-stagger .card{transform:translateY(calc(var(--card-h) * .5));opacity:.3;transition:transform var(--dur) ease-out,opacity var(--dur) ease-out}.seat-hand.deal-stagger .card:nth-child(3n+2){transition-delay:calc(var(--dur) / 3)}.seat-hand.deal-stagger .card:nth-child(3n+3){transition-delay:calc(var(--dur) * 2 / 3)}.stock-indicator.flip{transition:transform var(--dur) ease-out,opacity var(--dur) ease-out}[data-motion~=flip] .stock-indicator.flip{transform:translateY(calc(var(--gap-2) * -1)) scale(1.08) rotate(-2deg);opacity:.55;transition:transform var(--dur) ease-out,opacity var(--dur) ease-out}.trick-play.trick-converge{transition:transform var(--dur) ease-out}[data-motion~=trick] .trick-play.trick-converge{transform:translateY(calc(var(--gap-2) * -1)) scale(.92);transition:transform var(--dur) ease-out}.trick.trick-win{transition:border-color var(--dur) ease-out,box-shadow var(--dur) ease-out}[data-motion~=trickWin] .trick.trick-win{border-color:var(--brass);box-shadow:0 0 0 3px var(--brass-deep);transition:border-color var(--dur) ease-out,box-shadow var(--dur) ease-out}.trick-play.bela-flash .card,.trick-play.bela-flash .trick-seat{transition:box-shadow var(--dur) ease-out,color var(--dur) ease-out}[data-motion~=bela] .trick-play.bela-flash .card{box-shadow:0 0 0 3px var(--brass),var(--shadow-card);transition:box-shadow var(--dur) ease-out,color var(--dur) ease-out}.score-row.score-tick{transition:background-color var(--dur) ease-out,box-shadow var(--dur) ease-out,transform var(--dur) ease-out}[data-motion~=score] .score-row.score-tick{background-color:var(--brass);transform:translateY(calc(var(--gap-1) * -1));transition:background-color var(--dur) ease-out,box-shadow var(--dur) ease-out,transform var(--dur) ease-out}@media (prefers-reduced-motion: reduce){:root{--dur: 0ms}.game-screen *,.game-screen *:before,.game-screen *:after{transition-duration:0ms;transition-delay:0ms}}
