:root{--felt:#1f5e3a;--felt-dark:#174a2d;--ink:#f4f1e8;--muted:#f4f1e8b3;--accent:#f2c14e;--danger:#e5533d;--card-w:clamp(52px, 13vw, 76px);--card-h:calc(var(--card-w) * 1.4);--radius:10px;color:var(--ink);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-webkit-text-size-adjust:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(ellipse at 50% 30%, var(--felt) 0%, var(--felt-dark) 75%);overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;border-radius:var(--radius);cursor:pointer;touch-action:manipulation;background:#ffffff1f;border:1px solid #fff3;padding:10px 16px}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--accent);color:#2a2008;border-color:#0000;font-weight:700}button.ghost{background:0 0}input,select{font:inherit;color:inherit;background:#00000040;border:1px solid #fff3;border-radius:8px;padding:8px 10px}.home{max-width:420px;padding:calc(24px + env(safe-area-inset-top)) calc(18px + env(safe-area-inset-right)) calc(48px + env(safe-area-inset-bottom)) calc(18px + env(safe-area-inset-left));flex-direction:column;gap:18px;margin:0 auto;display:flex}.home h1{letter-spacing:.02em;margin:8px 0 0;font-size:40px}.home h1 small{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:14px;font-weight:400;display:block}.panel{background:#00000038;border-radius:14px;flex-direction:column;gap:10px;padding:14px 16px;display:flex}.panel h2{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 4px;font-size:13px}.row{justify-content:space-between;align-items:center;gap:10px;display:flex}.row label{flex:1}.seg{border:1px solid #fff3;border-radius:8px;display:inline-flex;overflow:hidden}.seg button{background:0 0;border:0;border-radius:0;padding:6px 10px;font-size:13px}.seg button.on{background:var(--accent);color:#2a2008;font-weight:600}.hint{color:var(--muted);margin:0;font-size:12px}.credits{text-align:center;color:var(--muted);margin-top:6px;font-size:12px;line-height:1.8}.credits a{color:var(--accent);text-decoration:none}.credits a:hover,.credits a:focus-visible{text-decoration:underline}.crash .panel p{margin:0}.crash summary{cursor:pointer;color:var(--muted);font-size:13px}.crash pre{white-space:pre-wrap;word-break:break-word;color:var(--muted);margin:8px 0 0;font-family:ui-monospace,monospace;font-size:12px}.table{grid-template-rows:auto 1fr auto;height:100dvh;display:grid;position:relative;overflow:hidden}.topbar{padding:calc(8px + env(safe-area-inset-top)) calc(12px + env(safe-area-inset-right)) 8px calc(12px + env(safe-area-inset-left));background:#0003;justify-content:space-between;align-items:center;font-size:13px;display:flex}.topbar .score{gap:14px;display:flex}.topbar .score b{font-size:16px}.topbar .info{color:var(--muted)}.topbar .trump{font-size:18px}.topbar .trump.red{color:#ff8a7a}.arena{padding:8px calc(8px + env(safe-area-inset-right)) 8px calc(8px + env(safe-area-inset-left));grid-template:".north.""west center east"1fr".south."/1fr 2fr 1fr;min-height:0;display:grid;position:relative}.seat{flex-direction:column;align-items:center;gap:4px;min-width:0;font-size:13px;display:flex}.seat.north{grid-area:north}.seat.west{grid-area:west;place-self:center start}.seat.east{grid-area:east;place-self:center end}.seat.south{grid-area:south}.seat .name{white-space:nowrap;text-overflow:ellipsis;background:#00000040;border-radius:999px;max-width:100%;padding:3px 10px;overflow:hidden}.seat.active .name{background:var(--accent);color:#2a2008;font-weight:600}.seat .tag{color:var(--muted);font-size:11px}.seat .bubble{background:#ffffff26;border-radius:999px;padding:2px 8px;font-size:12px}.seat .bubble.bid{background:var(--ink);color:#222;font-weight:700}.backs{display:flex}.backs .back{width:calc(var(--card-w) * .45);height:calc(var(--card-h) * .45);margin-left:calc(var(--card-w) * -.3);background:repeating-linear-gradient(45deg,#7a2a2a 0 3px,#8e3b3b 3px 6px);border:1px solid #ffffff80;border-radius:4px}.backs .back:first-child{margin-left:0}.seat.west .backs,.seat.east .backs{flex-direction:column}.seat.west .backs .back,.seat.east .backs .back{margin-left:0;margin-top:calc(var(--card-h) * -.33)}.seat.west .backs .back:first-child,.seat.east .backs .back:first-child{margin-top:0}.center{min-height:calc(var(--card-h) * 2.3);flex-direction:column;grid-area:center;justify-content:center;align-items:center;gap:10px;display:flex;position:relative}.trick{width:calc(var(--card-w) * 2.9);height:calc(var(--card-h) * 2.1);position:relative}.trick .slot{transition:transform .25s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.trick .slot.s0{transform:translate(-50%, calc(-50% + var(--card-h) * .45))}.trick .slot.s1{transform:translate(calc(-50% - var(--card-w) * .85), calc(-50% + var(--card-h) * .05))}.trick .slot.s2{transform:translate(-50%, calc(-50% - var(--card-h) * .45))}.trick .slot.s3{transform:translate(calc(-50% + var(--card-w) * .85), calc(-50% - var(--card-h) * .05))}.trick .slot.winner .card{outline:3px solid var(--accent)}.center .message{text-align:center;color:var(--ink);pointer-events:none;background:#00000040;border-radius:999px;min-height:1.4em;padding:4px 12px;font-size:14px}.center .message:empty{display:none}.trump-mark{font-size:calc(var(--card-w) * 4.6);color:#ffffff0f;pointer-events:none;z-index:0;line-height:1;position:absolute}.trump-mark.red{color:#ff96871a}.lasttrick{background:#00000047;border-radius:999px;padding:4px 12px;font-size:12px}.tricklist{justify-content:center;gap:10px;display:flex}.tricklist .tp{color:var(--muted);opacity:.8;flex-direction:column;align-items:center;gap:6px;font-size:12px;display:flex}.tricklist .tp.won{opacity:1;color:var(--ink);font-weight:600}.tricklist .tp.won .card{outline:2px solid var(--accent)}.bottom{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);flex-direction:column;display:flex}.card{width:var(--card-w);height:var(--card-h);color:#1d1d1d;background:#fbfaf5;border:1px solid #cfcabb;border-radius:8px;flex:none;font-weight:700;line-height:1;position:relative;box-shadow:0 2px 6px #00000059}.card.red{color:#c8271d}.card .corner{font-size:calc(var(--card-w) * .26);flex-direction:column;align-items:center;display:flex;position:absolute;top:5px;left:6px}.card .corner .s{font-size:calc(var(--card-w) * .24)}.card .pip{font-size:calc(var(--card-w) * .5);position:absolute;bottom:4px;right:6px}.card.dim{filter:brightness(.6)}.card:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.card.small{--card-w:34px;--card-h:48px}.hand{padding:6px 10px calc(14px + env(safe-area-inset-bottom));min-height:calc(var(--card-h) + 26px + env(safe-area-inset-bottom));background:#0000002e;justify-content:center;align-items:flex-end;gap:0;display:flex}.hand .card{margin-left:calc(var(--card-w) * -.35);transition:transform .15s,filter .15s}.hand .card:first-child{margin-left:0}.hand .card.playable{cursor:pointer}.hand .card.playable:hover,.hand .card.playable:active{transform:translateY(-10px)}.hand .card.selected{outline:3px solid var(--accent);transform:translateY(-14px)}.bidbar{background:#0000004d;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;padding:8px 12px;display:flex}.bidbar .label{text-align:center;width:100%;color:var(--muted);font-size:13px}.bidbar button{min-width:56px;font-size:18px;font-weight:700}.overlay{padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));z-index:10;background:#0000008c;place-items:center;display:grid;position:absolute;inset:0}.sheet{background:#1b2a22;border-radius:16px;flex-direction:column;gap:12px;width:min(420px,100%);max-height:90vh;padding:18px;display:flex;overflow:auto;box-shadow:0 10px 40px #00000080}.sheet h2{margin:0;font-size:20px}.sheet h2 small{color:var(--muted);margin-top:2px;font-size:13px;font-weight:400;display:block}.awards{grid-template-columns:1fr auto auto;align-items:center;gap:6px 12px;font-size:14px;display:grid}.awards .pt{text-transform:capitalize}.awards .who{text-align:right}.awards .nobody{color:var(--muted);font-style:italic}.tally{grid-template-columns:1fr 1fr;gap:10px;display:grid}.tally .team{text-align:center;background:#ffffff0f;border-radius:10px;padding:10px}.tally .team .n{font-size:28px;font-weight:700}.tally .team .d{color:var(--muted);font-size:13px}.tally .team .d.pos{color:#8be28b}.tally .team .d.neg{color:#ff8a7a}.tally .team.win{outline:2px solid var(--accent)}.sheet .actions{justify-content:flex-end;gap:8px;display:flex}.menu{flex-direction:column;gap:8px;display:flex}.menu button{text-align:left}.history{flex-direction:column;gap:4px;max-height:40vh;font-size:13px;display:flex;overflow:auto}.history .h{border-bottom:1px solid #ffffff14;justify-content:space-between;padding:4px 0;display:flex}.seed{color:var(--muted);font-family:ui-monospace,monospace;font-size:12px}@media (width>=700px){:root{--card-w:84px}.table{max-width:820px;margin:0 auto}}@media (orientation:landscape) and (height<=500px){:root{--card-w:clamp(38px, 12.5vh, 66px)}.table{max-width:none;margin:0}.topbar{padding:calc(4px + env(safe-area-inset-top)) calc(12px + env(safe-area-inset-right)) 4px calc(12px + env(safe-area-inset-left))}.topbar button{padding:4px 12px}.arena{padding:4px calc(8px + env(safe-area-inset-right)) 4px calc(8px + env(safe-area-inset-left));grid-template-areas:"west north east""west center east""west south east";row-gap:4px}.seat{gap:3px;font-size:12px}.seat .name{padding:2px 8px}.seat.north,.seat.south{flex-direction:row;justify-content:center;gap:8px}.center{gap:6px;min-height:0}.trick{width:calc(var(--card-w) * 3);height:calc(var(--card-h) * 1.75)}.trick .slot.s0{transform:translate(-50%, calc(-50% + var(--card-h) * .37))}.trick .slot.s1{transform:translate(calc(-50% - var(--card-w) * .95), calc(-50% + var(--card-h) * .04))}.trick .slot.s2{transform:translate(-50%, calc(-50% - var(--card-h) * .37))}.trick .slot.s3{transform:translate(calc(-50% + var(--card-w) * .95), calc(-50% - var(--card-h) * .04))}.center .message{padding:2px 10px;font-size:12px}.lasttrick{padding:2px 10px;font-size:11px}.bottom{padding:4px calc(12px + env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom)) calc(12px + env(safe-area-inset-left));background:#0000002e;flex-direction:row;justify-content:center;align-items:center;gap:16px}.hand{min-height:var(--card-h);background:0 0;padding:0}.bidbar{background:0 0;order:2;gap:6px;max-width:320px;padding:0}.bidbar .label{font-size:12px}.bidbar button{min-width:44px;padding:6px 10px;font-size:16px}.sheet.recap{grid-template-columns:1fr 1fr;align-items:start;column-gap:20px;width:min(680px,100%);display:grid}.sheet.recap>h2{grid-column:1/-1}.sheet.recap>.awards{grid-area:2/1/span 2}.sheet.recap>.tally,.sheet.recap>.actions{grid-column:2}.awards .card.small{--card-w:28px;--card-h:39px}.history{max-height:28vh}.menu{flex-direction:row}.menu button{text-align:center;flex:1}}
