:root{--felt:#0f4a37;--felt-hi:#1b6b4f;--felt-deep:#072419;--ink:#f4efe2;--muted:#f4efe29e;--line:#f4efe224;--glass:#0a261c9e;--glass-hi:#ffffff1a;--card:#fbf8f1;--card-edge:#00000029;--red:#c4302a;--black:#1b1a21;--gold:#e8b64c;--gold-hi:#f5c968;--team-0:#6fc3ff;--team-1:#ff9c7a;--ease-out:cubic-bezier(.2, .8, .2, 1);--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;overscroll-behavior:none}html,body,#root{height:100%;margin:0}body{color:var(--ink);background:radial-gradient(ellipse 120% 80% at 50% 35%, var(--felt-hi) 0%, var(--felt) 40%, var(--felt-deep) 100%);background-color:var(--felt-deep);font-family:Inter,system-ui,-apple-system,sans-serif;overflow:hidden}input,textarea,select{font:inherit;font-size:16px}button,a,[role=button],[role=option]{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}a{color:inherit}.muted{color:var(--muted)}.small{font-size:13px}.red{color:#ff7b70}.row{align-items:center;gap:8px;display:flex}.error-text{color:#ffb1a6;font-size:14px}.btn{font:inherit;color:inherit;border:1px solid var(--line);cursor:pointer;white-space:nowrap;transition:transform .12s var(--ease-out), background .12s, opacity .12s, box-shadow .12s;border-radius:999px;outline:none;justify-content:center;align-items:center;gap:6px;font-weight:500;display:inline-flex}.btn svg{flex:none}.btn-sm{min-height:30px;padding:5px 11px;font-size:13px}.btn-md{min-height:38px;padding:8px 15px;font-size:15px}.btn-lg{min-height:48px;padding:12px 22px;font-size:16px}.btn-icon{aspect-ratio:1;padding-left:0;padding-right:0}.btn-glass{background:var(--glass-hi);-webkit-backdrop-filter:blur(10px)}.btn-ghost{background:0 0;border-color:#0000}.btn-primary{background:var(--gold);color:#2a1d02;border-color:#0000;font-weight:600}.btn-accent{color:#3a2600;background:#fff3d6;border-color:#0000;font-weight:600}.btn[data-pressed]{transform:scale(.96)}.btn[data-focus-visible]{box-shadow:0 0 0 3px #e8b64c99}.btn[data-disabled]{opacity:.5;cursor:default}@media (hover:hover) and (pointer:fine){.btn-glass[data-hovered],.btn-ghost[data-hovered]{background:#ffffff29}.btn-primary[data-hovered]{background:var(--gold-hi)}}input{color:var(--ink);border:1px solid var(--line);background:#00000047;border-radius:999px;outline:none;min-width:0;padding:10px 16px}input:focus{border-color:var(--gold)}.pcard{--card-w:72px;width:var(--card-w);height:calc(var(--card-w) * 1.4);border-radius:calc(var(--card-w) * .1);background:var(--card);box-shadow:0 1px 0 var(--card-edge), 0 calc(var(--card-w) * .06) calc(var(--card-w) * .16) #00000047;-webkit-user-select:none;user-select:none;flex:none;font-family:Fraunces,Georgia,serif;position:relative;overflow:hidden}.pcard.red{color:var(--red)}.pcard.black{color:var(--black)}.pc-index{top:calc(var(--card-w) * .06);left:calc(var(--card-w) * .07);flex-direction:column;align-items:center;line-height:.95;display:flex;position:absolute}.pc-index b{font-size:calc(var(--card-w) * .27);letter-spacing:-.04em;font-weight:800}.pc-index i{font-style:normal;font-size:calc(var(--card-w) * .21)}.pc-flip{top:auto;left:auto;bottom:calc(var(--card-w) * .06);right:calc(var(--card-w) * .07);transform:rotate(180deg)}.pc-pip{font-size:calc(var(--card-w) * .5);padding-top:calc(var(--card-w) * .08);place-items:center;display:grid;position:absolute;inset:0}.pc-ace{font-size:calc(var(--card-w) * .7)}.pc-court{inset:calc(var(--card-w) * .2) calc(var(--card-w) * .22);border-radius:calc(var(--card-w) * .06);background:color-mix(in srgb, currentColor 6%, transparent);border:1.5px solid;place-content:center;justify-items:center;line-height:1;display:grid;position:absolute}.pc-court b{font-size:calc(var(--card-w) * .36);font-weight:800}.pc-court i{font-style:normal;font-size:calc(var(--card-w) * .24)}.pcard-joker .pc-joker-index{writing-mode:vertical-rl;font-family:Inter,sans-serif;font-weight:800;font-size:calc(var(--card-w) * .13);letter-spacing:.06em}.pcard-joker .pc-flip{transform:none}.pc-joker-star{font-size:calc(var(--card-w) * .58);place-items:center;display:grid;position:absolute;inset:0}.pcard-back{border:calc(var(--card-w) * .06) solid var(--card);background:radial-gradient(circle,#ffffff1f 0 22%,#0000 23%),repeating-linear-gradient(45deg,#9e2a24 0 5px,#b8362e 5px 10px)}.pcard.is-highlight:after{content:"";border-radius:inherit;pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 0 2px #e8b64cd9}.pcard.is-selected{box-shadow:0 0 0 3px var(--gold), 0 14px 24px #00000061}.pcard.is-fresh{background:#fff1c7}.pcard.is-glow{box-shadow:0 0 0 3px var(--gold), 0 0 28px #e8b64ca6}.pcard.is-dim{filter:brightness(.7)}.hand{outline:none;width:100%;position:relative}.hand-slot{touch-action:none;position:absolute}.hand-hit{cursor:pointer;border-radius:8px;outline:none}.hand-hit .pcard{transition:transform .14s var(--ease-out)}.hand-hit:focus-visible .pcard{box-shadow:0 0 0 3px #9fd3ff,0 10px 20px #00000059}@media (hover:hover) and (pointer:fine){.hand-hit:hover .pcard:not(.is-selected){transform:translateY(-8px)}}.drag-preview{padding:8px;display:flex}.table-page{grid-template:"header header""felt side"minmax(0,1fr)"me side"/minmax(0,1fr) 300px;height:100dvh;display:grid}.table-header{padding:calc(8px + var(--safe-top)) calc(14px + var(--safe-right)) 8px calc(14px + var(--safe-left));border-bottom:1px solid var(--line);background:#00000024;grid-area:header;align-items:center;gap:10px;display:flex}.brand{white-space:nowrap;align-items:center;gap:6px;font-family:Fraunces,serif;font-size:19px;font-weight:800;text-decoration:none;display:inline-flex}.room-chip{font-size:13px}.dot{background:#d9534f;border-radius:50%;flex:none;width:7px;height:7px}.dot.on{background:#5cd88a}.header-stats{gap:16px;margin-left:auto;display:flex}.stat{flex-direction:column;align-items:center;min-width:30px;line-height:1.1;display:flex}.stat span{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:10px}.stat b{font-variant-numeric:tabular-nums;font-family:Fraunces,serif;font-size:19px}.stat.accent b{color:var(--gold)}.felt{grid-area:felt;min-height:0;position:relative;overflow:hidden}.seat-slot{z-index:2;position:absolute}.seat-top{top:12px;left:50%;transform:translate(-50%)}.seat-left{left:calc(14px + var(--safe-left));top:50%;transform:translateY(-50%)}.seat-right{right:calc(14px + var(--safe-right));top:50%;transform:translateY(-50%)}.stage{place-items:center;display:grid;position:absolute;inset:0}.my-area{padding:6px calc(16px + var(--safe-right)) calc(12px + var(--safe-bottom)) calc(16px + var(--safe-left));grid-area:me;min-width:0}.action-bar,.lobby-me{flex-wrap:wrap;align-items:center;gap:8px;min-height:42px;display:flex}.side-panel{border-left:1px solid var(--line);padding:14px 14px calc(14px + var(--safe-bottom));overscroll-behavior:contain;background:#00000029;flex-direction:column;grid-area:side;gap:18px;min-height:0;display:flex;overflow-y:auto}.side-section h3{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);justify-content:space-between;align-items:baseline;margin:0 0 8px;font-size:11px;font-weight:600;display:flex}.side-section h3 b{color:var(--ink);letter-spacing:0;font-family:Fraunces,serif;font-size:18px}.side-section.grow{flex-direction:column;flex:1;min-height:160px;display:flex}.seat-plate{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;max-width:100%;padding:5px 10px 5px 6px;font-size:14px;display:inline-flex;position:relative}.seat-plate.team-0{box-shadow:inset 3px 0 0 var(--team-0)}.seat-plate.team-1{box-shadow:inset 3px 0 0 var(--team-1)}.seat-plate.empty{border-style:dashed;gap:2px;padding:4px}.seat-kind{background:#ffffff1a;border-radius:50%;flex:none;place-items:center;width:22px;height:22px;display:grid}.seat-kind.kind-ai{background:linear-gradient(135deg,#7c5cff,#3fb6ff)}.seat-kind.kind-bot{background:#ffffff2e}.seat-name{text-overflow:ellipsis;overflow:hidden}.seat-name em{color:var(--muted);font-style:normal}.seat-verified{color:var(--gold)}.seat-away{color:#ffb1a6}.turn-ring{border:2px solid var(--gold);pointer-events:none;border-radius:999px;position:absolute;inset:-4px;box-shadow:0 0 18px #e8b64c73}.badge{text-transform:uppercase;letter-spacing:.06em;background:#ffffff24;border-radius:6px;padding:2px 6px;font-size:10px}.badge.gold{background:var(--gold);color:#2a1d02}.tractor-seat{flex-direction:column;align-items:center;gap:8px;display:flex}.tractor-seat.pos-left{align-items:flex-start}.tractor-seat.pos-right{align-items:flex-end}.opp-hand{align-items:center;gap:8px;display:flex}.opp-hand.vertical{flex-direction:column}.opp-fan{display:flex}.opp-hand.vertical .opp-fan{flex-direction:column;padding:10px 0}.opp-count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.play-zone{border-radius:28px;place-items:center;width:min(460px,90%);height:min(300px,70%);transition:background .16s,box-shadow .16s;display:grid;position:relative}.play-zone.is-target{background:#e8b64c14;box-shadow:inset 0 0 0 2px #e8b64c80}.play-zone-hint{border-radius:inherit;color:var(--gold);pointer-events:none;border:2px dashed #e8b64c8c;place-items:end center;padding-bottom:10px;font-size:13px;font-weight:600;display:grid;position:absolute;inset:0}.trick{width:0;height:0;position:relative}.trick .pcard{margin-left:calc(var(--card-w) / -2);margin-top:calc(var(--card-w) * -.7)}.panel{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);text-align:center;z-index:3;border-radius:22px;flex-direction:column;align-items:center;gap:12px;width:min(420px,100vw - 32px);padding:22px;display:flex}.panel h1,.panel h2{margin:0;font-family:Fraunces,serif}.panel p{margin:0}.dealing{gap:4px;width:min(300px,72vw);padding:14px;position:absolute}.dealing b{font-family:Fraunces,serif;font-size:17px}.lobby-panel{overscroll-behavior:contain;max-height:calc(100% - 16px);overflow-y:auto}.invite{flex-direction:column;align-items:center;gap:10px;display:flex}.qr{background:#fbf8f1;border-radius:16px;padding:8px;line-height:0;box-shadow:0 10px 30px #0000004d}.invite-code{align-items:baseline;gap:8px;display:flex}.invite-code b{letter-spacing:.02em;font-family:Fraunces,serif;font-size:20px}.invite-actions{gap:8px;display:flex}.meter{background:#ffffff1a;border-radius:3px;height:6px;margin-bottom:10px;position:relative}.meter-fill{background:var(--team-1);border-radius:3px;height:100%}.meter-mark{background:var(--gold);width:2px;height:12px;position:absolute;top:-3px}.card-row{flex-wrap:wrap;justify-content:center;row-gap:6px;display:flex}.side-section .card-row{justify-content:flex-start}.last-trick div{gap:8px;padding:3px 0;font-size:13px;display:flex}.last-trick .muted{text-overflow:ellipsis;white-space:nowrap;width:64px;overflow:hidden}.last-trick em{color:var(--gold);margin-left:auto;font-style:normal}.chat{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex}.chat-list{overscroll-behavior:contain;flex:1;min-height:80px;overflow-y:auto}.chat-list p{-webkit-user-select:text;user-select:text;margin:0 0 6px;font-size:13px;line-height:1.35}.chat-system{color:var(--muted)}.chat-msg b{color:var(--gold);font-weight:600}.chat-form{gap:6px;display:flex}.chat-form input{flex:1;padding:8px 14px}.sheet-overlay{z-index:80;background:#00000073;position:fixed;inset:0}.sheet{z-index:90;border:1px solid var(--line);width:min(520px,100%);max-height:88dvh;padding:8px calc(18px + var(--safe-right)) calc(18px + var(--safe-bottom)) calc(18px + var(--safe-left));background:#0b3326;border-bottom:none;border-radius:22px 22px 0 0;outline:none;flex-direction:column;margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0}.sheet-handle{background:#ffffff40;border-radius:3px;flex:none;width:40px;height:5px;margin:4px auto 10px}.sheet-title{margin:0 0 12px;font-family:Fraunces,serif;font-size:20px}.sheet-body{overscroll-behavior:contain;min-height:0;overflow-y:auto}.side-sheet{flex-direction:column;gap:18px;min-height:50dvh;display:flex}.account{flex-direction:column;gap:12px;display:flex}.account p{margin:0}.account .row input{flex:1}.divider{color:var(--muted);align-items:center;gap:10px;font-size:12px;display:flex}.divider:before,.divider:after{content:"";background:var(--line);flex:1;height:1px}.toast-host{top:calc(64px + var(--safe-top));pointer-events:none;z-index:100;justify-content:center;display:flex;position:fixed;left:0;right:0}.toast{color:#3a2600;background:#fff3d6;border-radius:12px;max-width:calc(100vw - 32px);padding:10px 16px;font-weight:500;box-shadow:0 10px 30px #00000059}.loading{height:100dvh;color:var(--muted);place-content:center;justify-items:center;gap:12px;display:grid}.spinner{border:3px solid var(--line);border-top-color:var(--gold);border-radius:50%;width:28px;height:28px}.home{overscroll-behavior:contain;height:100dvh;padding:calc(56px + var(--safe-top)) 16px calc(24px + var(--safe-bottom));text-align:center;flex-direction:column;justify-content:safe center;align-items:center;gap:14px;display:flex;overflow-y:auto}.home-top{top:calc(12px + var(--safe-top));right:calc(12px + var(--safe-right));position:absolute}.home h1{margin:6px 0 0;font-family:Fraunces,serif;font-size:clamp(38px,9vw,68px);font-weight:800}.home>p{max-width:420px;margin:0}.hero-cards{margin-bottom:6px;display:flex}.hero-cards .pcard{margin:0 -14px}.home-form{gap:8px;width:min(420px,100%);display:flex}.home-form input{flex:1}.game-list{flex-direction:column;gap:10px;width:min(420px,100%);display:flex}.game-card{text-align:left;background:var(--glass);border:1px solid var(--line);border-radius:18px;align-items:center;gap:12px;padding:16px;display:flex}.game-card h2{margin:0 0 2px;font-family:Fraunces,serif;font-size:22px}.game-card p{margin:0}.game-card .btn{margin-left:auto}@media (width<=640px){.table-page{grid-template-columns:minmax(0,1fr);grid-template-areas:"header""felt""me"}.table-header{padding-left:calc(10px + var(--safe-left));padding-right:calc(6px + var(--safe-right));gap:6px}.brand-name{display:none}.room-chip-label{text-overflow:ellipsis;max-width:92px;overflow:hidden}.header-stats{gap:9px}.stat b{font-size:16px}.stat span{font-size:9px}.seat-top{top:8px}.seat-left,.seat-right{top:40%}.seat-left{left:calc(6px + var(--safe-left))}.seat-right{right:calc(6px + var(--safe-right))}.seat-plate{gap:4px;padding:3px 8px 3px 4px;font-size:12px}.seat-name{max-width:74px}.seat-kind{width:18px;height:18px}.tractor-seat{gap:4px}.my-area{padding:4px calc(10px + var(--safe-right)) calc(8px + var(--safe-bottom)) calc(10px + var(--safe-left))}.action-bar{gap:6px;min-height:38px}.play-zone{width:min(300px,76vw);height:220px}.panel{gap:10px;padding:16px}.lobby-panel h1{font-size:24px}.lobby-panel .qr svg{width:120px;height:120px}.panel-fab{right:calc(8px + var(--safe-right));z-index:4;position:absolute;bottom:8px}.hero-cards .pcard{margin:0 -18px}}.seat-diagram{grid-template:".top.""left felt right"".bottom."/1fr auto 1fr;place-items:center;gap:8px;width:100%;display:grid}.diagram-seat.at-top{grid-area:top}.diagram-seat.at-left{grid-area:left;justify-self:end}.diagram-seat.at-right{grid-area:right;justify-self:start}.diagram-seat.at-bottom{grid-area:bottom}.diagram-felt{border:1px dashed var(--line);text-align:center;width:74px;height:52px;color:var(--muted);border-radius:14px;grid-area:felt;place-items:center;padding:4px;font-size:10px;line-height:1.2;display:grid}.invite-details{width:100%}.invite-details summary{cursor:pointer;color:var(--muted);padding:4px;font-size:14px;list-style:none}.invite-details summary::-webkit-details-marker{display:none}.invite-details[open] summary{margin-bottom:8px}@media (width<=640px){.seat-diagram{gap:6px}.diagram-felt{width:44px;font-size:0}.seat-diagram .seat-plate.empty .btn-sm{padding:4px 7px}}.table-page{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.chat-list,.chat-form input{-webkit-user-select:text;user-select:text}.invite-details summary.btn{color:var(--ink);margin:0 auto;display:inline-flex}.invite-details{text-align:center}@media (width<=640px){.seat-add-label{display:none}.seat-diagram .seat-plate.empty .btn-ghost{padding:4px 8px}.diagram-felt{display:none}.seat-diagram{grid-template-columns:1fr 1fr;grid-template-areas:"top top""left right""bottom bottom"}.diagram-seat.at-left,.diagram-seat.at-right{justify-self:center}}
