:root{--felt-1: #14513c;--felt-2: #0c3527;--rail: #08221a;--ink: #10201a;--paper: #fbfaf7;--paper-edge: #d9d5cc;--text: #f2f6f4;--text-dim: #9fb5ab;--us: #6fd3a3;--them: #f0a868;--warn: #ffcf6b;--bad: #ff8b7a;--gold: #ecc46a;--focus: #7fe3b4;--suit-red: #c8362f;--suit-black: #17181a;--suit-blue: #2166a8;--suit-green: #1f7a4d;--card-w: 58px;--radius: 10px;--shadow-lo: 0 1px 2px rgba(0, 0, 0, .3);--shadow-hi: 0 10px 28px rgba(0, 0, 0, .45);--ease: cubic-bezier(.22, .68, .36, 1);--speed: .42s;color-scheme:dark}@media (prefers-reduced-motion: reduce){:root{--speed: 1ms}*{animation-duration:1ms!important;transition-duration:1ms!important}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font:400 16px/1.45 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--rail);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,.card:focus-visible{outline:2px solid var(--focus);outline-offset:3px}.app{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:100%;max-width:1100px;margin:0 auto;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom);overflow:hidden}.panel{background:#08221ad1;border:1px solid rgba(255,255,255,.09);border-radius:16px;padding:20px}.center-screen{display:grid;place-items:center;min-height:100%;padding:24px 16px;background:radial-gradient(120% 90% at 50% 0%,var(--felt-1),var(--rail))}.stack{display:grid;gap:14px;width:min(420px,100%)}.brand{text-align:center;margin-bottom:8px}.brand h1{margin:0;font-size:34px;letter-spacing:-.5px}.brand p{margin:4px 0 0;color:var(--text-dim);font-size:14px}label{display:grid;gap:6px;font-size:13px;color:var(--text-dim)}input,select,textarea{font:inherit;color:var(--text);background:#0000004d;border:1px solid rgba(255,255,255,.16);border-radius:10px;padding:12px 14px;min-height:46px;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--focus);outline-offset:1px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 18px;border-radius:10px;font-weight:600;background:#ffffff1a;border:1px solid rgba(255,255,255,.16);transition:transform .12s var(--ease),background .12s var(--ease)}.btn:hover{background:#ffffff29}.btn:active{transform:translateY(1px)}.btn[disabled]{opacity:.45;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg,#2f9c70,#1d7a55);border-color:#38b483}.btn.primary:hover{background:linear-gradient(180deg,#37ab7c,#21875e)}.btn.ghost{background:transparent}.btn.wide{width:100%}.row{display:flex;gap:10px;align-items:center}.row.wrap{flex-wrap:wrap}.spacer{flex:1}.muted{color:var(--text-dim);font-size:13px}.error{background:#ff8b7a1f;border:1px solid rgba(255,139,122,.4);color:var(--bad);border-radius:10px;padding:10px 12px;font-size:14px}.scoreboard{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:8px 10px;background:var(--rail);border-bottom:1px solid rgba(255,255,255,.08);font-size:13px;min-width:0}.scoreboard>*{flex:0 0 auto;white-space:nowrap}.sb-tools{display:flex;align-items:center;gap:8px;margin-left:auto}.score-pill{display:flex;align-items:baseline;gap:6px;padding:4px 10px;border-radius:999px;background:#ffffff0f}.score-pill b{font-size:17px;font-variant-numeric:tabular-nums}.score-pill.us b{color:var(--us)}.score-pill.them b{color:var(--them)}.trump-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border-radius:999px;background:var(--paper);color:var(--ink);font-weight:700;font-size:16px}.trump-chip .glyph{font-size:21px;line-height:1}.trump-label{font-size:13px;font-weight:800;letter-spacing:.02em;opacity:.62}.trump-suit{font-size:16px}.trump-main{display:inline-flex;align-items:center;gap:6px}.trump-caller{display:inline-flex;align-items:baseline;gap:4px;font-size:12.5px;font-weight:600;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-left:7px;margin-left:1px;border-left:1px solid rgba(16,32,26,.22)}.trump-caller .tc-role{font-weight:800}.trump-caller .tc-by{opacity:.62;font-weight:600}.trump-caller .tc-name{opacity:.72}.trump-caller .tc-name:before{content:"· "}.trump-caller.us .tc-role{color:#12744a}.trump-caller.them .tc-role{color:#b34f12}@media (max-width: 560px){.trump-chip{flex-direction:column;gap:1px;align-items:center;font-size:14.5px;padding:3px 12px 4px;border-radius:16px}.trump-chip .glyph{font-size:18px}.trump-label{font-size:11.5px}.trump-suit{font-size:14px}.trump-caller{border-left:0;padding-left:0;margin-left:0;font-size:11px;line-height:1.1;max-width:none}.trump-caller .tc-name{display:none}}.room-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:1px;color:var(--text-dim)}.table{position:relative;min-height:0;overflow:hidden;background:radial-gradient(90% 70% at 50% 45%,var(--felt-1),var(--felt-2) 70%,var(--rail))}.arena{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(100%,620px);height:min(100%,calc(var(--card-w) * 7))}@media (min-width: 820px){.arena{width:min(100%,780px)}}.seat{position:absolute;display:flex;align-items:center;gap:8px;padding:5px 10px 5px 5px;border-radius:999px;background:#00000057;border:1px solid rgba(255,255,255,.08);transition:box-shadow .2s var(--ease),border-color .2s var(--ease);min-width:0}.seat.north{top:0;left:50%;transform:translate(-50%);max-width:60%}.seat.south{bottom:0;left:50%;transform:translate(-50%);max-width:60%}.seat.west{left:4px;top:50%;transform:translateY(-50%)}.seat.east{right:4px;top:50%;transform:translateY(-50%)}.seat.west,.seat.east{flex-direction:column;gap:2px;padding:7px 6px;border-radius:14px;width:74px;text-align:center}.seat.west .seat-name,.seat.east .seat-name{font-size:11px}.seat.west .seat-meta,.seat.east .seat-meta{font-size:10px}.seat.active{border-color:var(--focus);box-shadow:0 0 0 2px #7fe3b459,0 0 22px #7fe3b44d}.seat.offline{opacity:.5}.seat.stand-in{opacity:.62;border-color:#ffcf6b80}.seat.stand-in .seat-meta{color:var(--warn)}.avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:#ffffff24;flex:0 0 auto}.seat.us .avatar{background:#6fd3a34d}.seat.them .avatar{background:#f0a8684d}.seat-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.seat-meta{font-size:11px;color:var(--text-dim)}.dealer-dot,.caller-dot{width:16px;height:16px;border-radius:50%;display:grid;place-items:center;font-size:9px;font-weight:800;flex:0 0 auto}.dealer-dot{background:#ffffff38}.caller-dot{background:var(--gold);color:var(--ink)}.timer-arc{position:absolute;inset:-3px;border-radius:999px;pointer-events:none;background:conic-gradient(var(--focus) calc(var(--pct) * 1%),transparent 0);opacity:.28}.trick{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:calc(var(--card-w) * 2.6);height:calc(var(--card-w) * 3.2);pointer-events:none}.trick .slot{position:absolute;left:50%;top:50%;margin:calc(var(--card-w) * -.7) 0 0 calc(var(--card-w) * -.5)}.trick .slot.from-south{transform:translateY(52%)}.trick .slot.from-north{transform:translateY(-52%)}.trick .slot.from-west{transform:translate(-58%,4%)}.trick .slot.from-east{transform:translate(58%,-4%)}.played{animation:play-in var(--speed) var(--ease) both}.trick.collecting .played{animation:collect var(--speed) var(--ease) both}@keyframes play-in{0%{opacity:0;transform:translate(var(--dx, 0),var(--dy, 0)) scale(.86)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes collect{to{opacity:0;transform:translate(var(--wx, 0),var(--wy, 0)) scale(.7)}}.winner-flash{position:absolute;inset:-8%;border-radius:20px;border:2px solid var(--focus);opacity:0;animation:flash .7s var(--ease);pointer-events:none}@keyframes flash{0%{opacity:0}30%{opacity:.8}to{opacity:0}}.card{position:relative;display:block;width:var(--card-w);height:calc(var(--card-w) * 1.4);border-radius:var(--radius);background:var(--paper);border:1px solid var(--paper-edge);box-shadow:var(--shadow-lo);padding:0;flex:0 0 auto;transition:transform .16s var(--ease),box-shadow .16s var(--ease),opacity .16s var(--ease),filter .16s var(--ease)}.card svg{display:block;width:100%;height:100%}.card.back{background:repeating-linear-gradient(45deg,#1d5f47 0 6px,#17503b 6px 12px);border-color:#0d3729}.card.playable{cursor:pointer}.card.playable:hover,.card.playable:focus-visible{transform:translateY(-14px);box-shadow:var(--shadow-hi)}.card.illegal{opacity:.34;filter:grayscale(.85);cursor:not-allowed}.card.illegal.risky{cursor:pointer;opacity:.55;filter:grayscale(.5)}.card.lifted{transform:translateY(-14px)}.handbar{background:linear-gradient(180deg,transparent,rgba(8,34,26,.92) 40%);padding:20px 8px max(12px,env(safe-area-inset-bottom))}.hand{display:flex;justify-content:center;align-items:flex-end;height:calc(var(--card-w) * 1.4 + 18px);padding-top:18px}.hand .card+.card{margin-left:calc(var(--card-w) * -.42)}.hand .card{touch-action:manipulation}@media (hover: none){.card.playable:hover{transform:none}}.bid-panel{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;gap:12px;padding:18px;border-radius:18px;background:#061c15f0;border:1px solid rgba(255,255,255,.12);box-shadow:var(--shadow-hi);width:min(340px,calc(100% - 32px));text-align:center}.bid-panel h2{margin:0;font-size:17px}.suit-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.suit-btn{aspect-ratio:1;border-radius:12px;background:var(--paper);color:var(--ink);font-size:26px;display:grid;place-items:center;border:2px solid transparent;transition:transform .12s var(--ease),border-color .12s var(--ease)}.suit-btn:hover{transform:translateY(-2px);border-color:var(--focus)}.forced-note{color:var(--warn);font-size:13px;font-weight:600}.toasts{position:fixed;left:50%;bottom:calc(var(--card-w) * 1.4 + 52px);transform:translate(-50%);display:grid;gap:8px;z-index:40;pointer-events:none;width:min(360px,calc(100% - 24px))}.toast{padding:10px 14px;border-radius:12px;background:#061c15f2;border:1px solid rgba(255,255,255,.14);box-shadow:var(--shadow-hi);font-size:14px;text-align:center;animation:toast-in .24s var(--ease) both}.toast.good{border-color:#6fd3a399}.toast.warn{border-color:#ffcf6b99;color:var(--warn)}.toast.bad{border-color:#ff8b7a99;color:var(--bad)}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.meld-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:999px;background:var(--gold);color:var(--ink);font-size:10px;font-weight:800;letter-spacing:.3px}button.meld-chip.tap{border:0;cursor:pointer;font-family:inherit}button.meld-chip.tap:hover,button.meld-chip.tap.on{filter:brightness(1.12)}button.meld-chip.tap:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.meld-pop{position:absolute;z-index:45;display:grid;gap:4px;padding:6px 8px;border-radius:12px;background:#08281ff7;border:1px solid rgba(255,255,255,.16);box-shadow:var(--shadow-hi);white-space:nowrap;cursor:pointer;font-size:12px}.meld-pop-run{display:flex;align-items:center;gap:4px}.meld-pop-run b{min-width:24px;color:var(--text-dim)}.seat.north .meld-pop{top:calc(100% + 6px);left:50%;transform:translate(-50%)}.seat.south .meld-pop{bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.seat.west .meld-pop{left:calc(100% + 6px);top:50%;transform:translateY(-50%)}.seat.east .meld-pop{right:calc(100% + 6px);top:50%;transform:translateY(-50%)}.sheet-backdrop{position:fixed;inset:0;background:#020c09a8;display:grid;place-items:center;padding:16px;z-index:50;animation:toast-in .18s var(--ease) both}.sheet{width:min(440px,100%);background:#0a2d22;border:1px solid rgba(255,255,255,.12);border-radius:18px;padding:20px;box-shadow:var(--shadow-hi)}.sheet h2{margin:0 0 4px;font-size:20px}.result-line{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.08);font-size:14px}.result-line:last-of-type{border-bottom:0}.result-line b{font-variant-numeric:tabular-nums}.verdict{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:800;letter-spacing:.4px;text-transform:uppercase}.verdict.made{background:#6fd3a333;color:var(--us)}.verdict.bate{background:#ff8b7a33;color:var(--bad)}.verdict.half{background:#ffcf6b33;color:var(--warn)}.tabs{display:flex;gap:6px;margin-bottom:4px}.tab{flex:1;padding:9px 0;border-radius:10px;text-align:center;font-size:14px;font-weight:600;background:#ffffff0f}.tab[aria-selected=true]{background:#6fd3a338;color:var(--us)}.seat-list{display:grid;gap:8px}.seat-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;background:#ffffff0d;font-size:14px}.dot{width:8px;height:8px;border-radius:50%;background:var(--text-dim)}.dot.on{background:var(--us)}.connection{position:fixed;top:8px;left:50%;transform:translate(-50%);padding:5px 12px;border-radius:999px;background:var(--warn);color:var(--ink);font-size:12px;font-weight:700;z-index:60}@media (min-width: 420px){:root{--card-w: 66px}}@media (min-width: 820px){:root{--card-w: 76px}}@media (max-width: 380px){:root{--card-w: 48px}}@media (max-width: 900px){.scoreboard .optional,.trump-caller .tc-name{display:none}}@media (max-width: 520px){.scoreboard .optional{display:none}.sb-tools{order:-1;flex:1 0 100%;justify-content:space-between;margin-left:0}.sb-leave{order:-1}.sb-tools .btn{min-height:30px!important}.scoreboard{padding:6px 10px 8px;row-gap:6px}.seat.north,.seat.south{max-width:74%}}@media (min-width: 420px){.seat.west,.seat.east{width:92px}}@media (max-height: 640px){.seat.west .seat-meta,.seat.east .seat-meta{display:none}.handbar{padding-top:14px}}.page{max-width:780px;margin:0 auto;padding:20px 16px 60px;min-height:100%;background:radial-gradient(120% 60% at 50% 0%,var(--felt-2),var(--rail) 70%)}.page-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:20px}.page-head h1{margin:0;font-size:24px;letter-spacing:-.3px}.page-head p{margin:2px 0 0;font-size:13px}.btn.back{min-height:38px;padding:0 13px;font-size:18px;line-height:1;flex:0 0 auto}.section{margin:0 0 10px;font-size:14px;font-weight:700;letter-spacing:.02em}.section .muted{font-weight:400;margin-left:5px}.btn.sm{min-height:34px;padding:0 12px;font-size:13px}.btn.danger{border-color:#ff8b7a73;color:var(--bad)}.btn.danger:hover{background:#ff8b7a24}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar.sm{width:26px;height:26px;font-size:10px}.avatar.xs{width:20px;height:20px;font-size:8px}.avatar.lg{width:46px;height:46px;font-size:15px;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}.lobby-nav{display:grid;grid-template-columns:1fr 1fr;gap:8px}.nav-item{display:flex;align-items:center;gap:9px;padding:13px 14px;border-radius:12px;background:#ffffff0f;border:1px solid rgba(255,255,255,.09);font-size:13.5px;font-weight:600;text-align:left;transition:background .14s var(--ease),border-color .14s var(--ease)}.nav-item:hover{background:#ffffff1c;border-color:var(--focus)}.nav-icon{font-size:15px;color:var(--us);line-height:1}.table-scroll{overflow-x:auto}table.rank{border-collapse:collapse;width:100%;font-size:14px}table.rank th,table.rank td{padding:10px 12px;text-align:left;border-bottom:1px solid rgba(255,255,255,.07)}table.rank th{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-dim);font-weight:600;white-space:nowrap}table.rank tbody tr:last-child td{border-bottom:0}table.rank tr.me{background:#6fd3a31a}table.rank .num{text-align:right;font-variant-numeric:tabular-nums}table.rank .rank-num{color:var(--text-dim);font-weight:700}.sound-toggle{min-height:32px;padding:0 8px;color:var(--text-dim)}.sound-toggle.on{color:var(--gold);border-color:#ecc46a80}table.rank .rank-num.medal-1{color:var(--gold)}table.rank .rank-num.medal-2{color:#cfd8dc}table.rank .rank-num.medal-3{color:#d59a6a}table.rank tr.flash{animation:rank-flash 1.6s var(--ease)}@keyframes rank-flash{0%,40%{background:#ecc46a47}to{background:#6fd3a31a}}@media (prefers-reduced-motion: reduce){table.rank tr.flash{animation:none}}.sort-head{font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;background:none;border:0;padding:4px 0;cursor:pointer}.sort-head:hover{color:var(--text)}.sort-head.on{color:var(--gold)}@media (max-width: 520px){table.rank th,table.rank td{padding:9px 6px}table.rank th:first-child,table.rank td:first-child{padding-left:10px}table.rank .col-games,table.rank .pl-word,table.rank .fb-text{display:none}table.rank .fb-icon{display:inline;font-weight:700;font-size:16px}table.rank td:last-child .btn{padding:0 10px;min-width:34px}}.fb-icon{display:none}table.rank td.player-cell{width:100%;max-width:0}.you-card{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;margin-bottom:12px;border-radius:12px;background:#6fd3a314;border:1px solid rgba(111,211,163,.28);font-size:14px}.you-card .you-label{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--us)}.stat-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,255,255,.08)}.stat{flex:1 1 72px}.stat-value{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}.stat-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-dim)}.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}.badge{padding:12px 8px;border-radius:12px;background:#ffffff0d;border:1px solid rgba(255,255,255,.09);text-align:center;display:grid;gap:3px;align-content:start}.badge.locked{opacity:.38;filter:grayscale(.8)}.badge-icon{font-size:26px;line-height:1.1}.badge-name{font-size:12px;font-weight:600}.badge-rarity{font-size:9.5px;text-transform:uppercase;letter-spacing:.08em}button.badge{cursor:pointer}button.badge:hover{border-color:var(--focus)}.tag{font-size:9.5px;font-weight:800;letter-spacing:.07em;padding:2px 7px;border-radius:999px;background:#ffffff21;white-space:nowrap}.tag.gold{background:var(--gold);color:var(--ink)}.tag.red{background:#ff8b7a40;color:var(--bad)}.tag.green{background:#6fd3a338;color:var(--us)}.pending-chip{display:inline-block;margin-top:5px;padding:3px 9px;border-radius:999px;background:#ffcf6b29;color:var(--warn);font-size:11.5px;font-weight:600}.pending-chip.danger{background:#ff8b7a29;color:var(--bad)}.queue-row{display:flex;align-items:center;gap:11px;flex-wrap:wrap;padding:11px;border-radius:11px;background:#ffffff0d}.player-row{display:flex;align-items:center;gap:11px;padding:11px 14px;border-bottom:1px solid rgba(255,255,255,.07)}.player-row:last-child{border-bottom:0}.player-row.banned{background:#ff8b7a12}.game-card{padding:14px}.room-code.big{font-size:19px;font-weight:700;letter-spacing:2px;color:var(--text)}.score-mini{display:flex;align-items:baseline;gap:5px;font-variant-numeric:tabular-nums;font-size:18px;font-weight:700;flex:0 0 auto}.score-mini span:first-child{color:var(--us)}.score-mini span:last-child{color:var(--them)}.score-mini i{color:var(--text-dim);font-style:normal;font-size:13px}@media (max-width: 420px){.lobby-nav{grid-template-columns:1fr}.player-row{flex-wrap:wrap}}.sheet{max-height:calc(100dvh - 32px);overflow-y:auto;width:min(680px,100%)}.sheet h3.section{margin:0}.section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px 12px;align-items:start}.field{display:grid;gap:4px;margin:0}.field.wide{grid-column:1 / -1}.field-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-dim)}.field input[type=text],.field input[type=number]{width:100%}.field input[type=checkbox]{justify-self:start;width:20px;height:20px}.field-static{font-size:13px;padding:9px 10px;border-radius:10px;background:#ffffff0a;border:1px dashed rgba(255,255,255,.12);color:var(--text-dim);overflow-wrap:anywhere}.field.changed .field-label{color:var(--gold)}.field.changed input{border-color:var(--gold)}.badge-icon.lg{font-size:22px;width:34px;text-align:center}.tag.rarity-common{background:#ffffff21}.tag.rarity-rare{background:#6ea8ff38;color:#9ec5ff}.tag.rarity-epic{background:#c186f038;color:#d7b0f7}.tag.rarity-legendary{background:var(--gold);color:var(--ink)}.field.readonly .field-label{opacity:.75}.sheet.wide{width:min(980px,100%)}.filter-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px 12px;margin-bottom:14px}.filter-bar select{width:100%}.game-row{width:100%;background:none;border:0;border-bottom:1px solid rgba(255,255,255,.07);cursor:pointer;text-align:left;color:inherit;font:inherit}.game-row:hover{background:#ffffff0d}.code-chip{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:700;letter-spacing:.06em;padding:5px 8px;border-radius:8px;background:#ffffff12}.score-chip{font-variant-numeric:tabular-nums;font-weight:700;text-align:right}.hand-review .trump-chip{font-size:12px;font-weight:700;padding:2px 8px;border-radius:999px;background:#ffffff1a}.trump-chip.suit-hearts,.trump-chip.suit-diamonds{color:#ff9e8f}table.tricks{width:100%;border-collapse:collapse;font-size:13px}table.tricks th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-dim);padding:4px 8px;font-weight:700;white-space:nowrap}table.tricks td{padding:6px 8px;border-top:1px solid rgba(255,255,255,.07);vertical-align:middle}table.tricks .num{text-align:right;font-variant-numeric:tabular-nums}table.tricks .running{font-weight:700;white-space:nowrap}table.tricks tr.last-trick td{background:#e8c54712}table.tricks .team-1{color:var(--us)}table.tricks .team-2{color:var(--them)}.played{display:flex;gap:4px;flex-wrap:wrap}.mini-card{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;padding:3px 6px;border-radius:6px;background:#ffffff14;border:1px solid transparent;white-space:nowrap}.mini-card.red{color:#ff9e8f}.mini-card.is-trump{border-color:#e8c54780}.mini-card.won{background:#6fd3a338;border-color:var(--us)}.mini-seat{font-size:9px;font-weight:800;opacity:.6;margin-right:3px;text-transform:uppercase}.meld-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.tag.team-1{background:#6fd3a338;color:var(--us)}.tag.team-2{background:#ff8b7a38;color:var(--them)}.score-grid{display:grid;grid-template-columns:1fr 72px 72px;gap:2px 8px;margin-top:12px;font-size:13px}.score-grid .num{text-align:right;font-variant-numeric:tabular-nums}.score-grid .strong{font-weight:700;font-size:15px}.deal-grid{display:grid;gap:10px;margin-top:10px}.deal-row{padding:9px 10px;border-radius:10px;background:#ffffff0a}.last-hand-btn{position:fixed;left:12px;bottom:12px;z-index:20;opacity:.8}.last-hand-btn:hover{opacity:1}.played{flex-wrap:nowrap}@media (max-width: 620px){table.tricks{font-size:12px}table.tricks td,table.tricks th{padding:6px 3px}table.tricks .col-led{display:none}.mini-card{padding:3px 4px;font-size:11.5px}.mini-seat{margin-right:2px}.score-grid{grid-template-columns:1fr 60px 60px}.sheet{padding:14px}}.table-actions{display:flex;gap:8px;justify-content:center;padding:0 12px 6px;flex-wrap:wrap}.table-actions .btn{min-height:30px}.table-actions .btn.mini{min-height:24px;padding:0 9px;font-size:12px}.table-actions .bella-toggle{font-size:12px;white-space:nowrap}.table-actions .bella-toggle input{width:14px;height:14px;margin:0}.table-actions .btn:disabled{opacity:.45;cursor:not-allowed}.report-link{align-self:center;margin-left:4px;padding:5px 7px;font-size:11.5px;line-height:1.2;color:var(--text-dim);text-decoration:underline;text-decoration-color:#ffffff38;text-underline-offset:2px;white-space:nowrap;border-radius:6px}.report-link:hover{color:var(--gold);text-decoration-color:var(--gold)}.report-link:focus-visible{color:var(--gold);outline:2px solid var(--gold);outline-offset:1px}.announce-layer{position:absolute;inset:0;display:grid;justify-items:center;align-items:start;pointer-events:none;z-index:60;padding:8px 12px}.announce{pointer-events:none;text-align:center;padding:8px 16px;border-radius:14px;max-height:100%;overflow:auto;background:#08281fe6;border:1px solid rgba(255,255,255,.16);box-shadow:var(--shadow-hi);backdrop-filter:blur(6px);animation:announce-in .22s var(--ease) both;max-width:min(340px,100%)}@keyframes announce-in{0%{opacity:0;transform:translateY(10px) scale(.94)}to{opacity:1;transform:none}}.announce-title{font-size:24px;font-weight:800;letter-spacing:-.02em;line-height:1.05}@media (max-height: 760px){.announce{padding:6px 14px;border-radius:12px}.announce-title{font-size:19px}.announce-sub{font-size:12.5px}.announce-runs{margin-top:6px;gap:4px}}@media (max-height: 760px) and (min-width: 700px){.announce-layer{justify-items:start}.announce{max-width:min(320px,34%);text-align:left}.announce-runs{align-items:flex-start}}.announce.bella .announce-title{color:var(--gold)}.announce.team-1 .announce-title{color:var(--us)}.announce.team-2 .announce-title{color:var(--them)}.announce.bella.team-1 .announce-title,.announce.bella.team-2 .announce-title{color:var(--gold)}.announce-head{display:flex;align-items:baseline;justify-content:center;gap:8px;flex-wrap:wrap}.announce.run-show{pointer-events:auto;cursor:pointer}.announce-sub{margin-top:0;font-size:13px;color:var(--text-dim)}.announce-runs{margin-top:6px;display:grid;gap:4px}.announce-run{display:flex;align-items:center;gap:10px;justify-content:center}.announce-run-points{font-size:13px;font-weight:800;min-width:28px;color:var(--text-dim)}.announce-run-cards{display:flex;gap:4px}.run-card{font-size:14px;font-weight:700;padding:4px 6px;border-radius:8px;background:#ffffff1a;border:1px solid rgba(255,255,255,.14)}.run-card.red{color:#ff9e8f}.run-card.spent{opacity:.32;text-decoration:line-through}.announce-note{font-size:10.5px;color:var(--text-dim);margin-top:2px}@media (max-width: 620px){.announce{padding:8px 14px}.announce-title{font-size:22px}.run-card{font-size:13px;padding:4px 6px}}.sheet.trick-sheet{width:min(460px,100%)}.trick-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.trick-card{display:grid;gap:5px;justify-items:center}.trick-order{font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.trick-face{width:100%;aspect-ratio:2.5 / 3.5;border-radius:9px;background:#f6f3ec;color:#16130f;display:grid;place-content:center;gap:1px;border:2px solid transparent;font-weight:700;line-height:1}.trick-face.red{color:#b3261e}.trick-face.is-trump{border-color:var(--gold)}.trick-value{font-size:21px;text-align:center}.trick-suit{font-size:19px;text-align:center}.trick-card.won .trick-face{box-shadow:0 0 0 3px var(--us)}.trick-name{font-size:11px;font-weight:600;max-width:100%}.team-1{color:var(--us)}.team-2{color:var(--them)}@media (max-width: 400px){.trick-value{font-size:18px}.trick-suit{font-size:16px}.trick-name{font-size:10px}}.style-list{display:grid;gap:16px;margin-top:14px}.style-row{display:grid;gap:7px}.style-row.blocked{opacity:.5}.style-head b{font-size:14px}.style-head p{margin:2px 0 0;font-size:12.5px;line-height:1.45}.style-choices{display:flex;flex-wrap:wrap;gap:6px}.chip{font:inherit;font-size:12.5px;font-weight:600;padding:7px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.14);background:#ffffff0d;color:var(--text-dim);cursor:pointer}.chip:hover:not(:disabled){border-color:var(--focus);color:var(--text)}.chip[aria-pressed=true]{background:var(--us);border-color:var(--us);color:var(--ink)}.chip:disabled{cursor:not-allowed}.tag.status{background:transparent;border:1px solid currentColor}.feedback-box{min-height:150px;resize:vertical;line-height:1.5;font-size:14.5px}.code-box{max-width:230px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:26px;font-weight:700;letter-spacing:.28em;text-align:center;padding:10px 8px 10px 16px}.mail-link{font-weight:600;color:var(--gold);text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}.mail-link:hover{text-decoration-thickness:2px}.feedback-row{border:1px solid rgba(255,255,255,.09);border-radius:12px;padding:11px 13px;background:#0000002e}.feedback-text{margin:6px 0 0;font-size:13.5px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.feedback-reply{margin-top:9px;padding:8px 11px;border-radius:10px;border-left:3px solid var(--us);background:#6fd3a317;font-size:13px;line-height:1.45;overflow-wrap:anywhere}.feedback-thread{display:flex;flex-direction:column;gap:6px}.feedback-reply.from-player{border-left-color:var(--gold);background:#ffffff0d;margin-left:14px}.feedback-row.is-fresh{border-color:#ff9b3d;box-shadow:0 0 0 1px #ff9b3d73}.tag.fresh{background:#ff9b3d;color:#1b1205;font-weight:700}.reply-line{display:flex;gap:8px;margin-top:9px;align-items:flex-end}.reply-line textarea{flex:1;min-height:44px}.feedback-context{margin:8px 0 0;font-size:11px;font-family:ui-monospace,monospace;color:var(--text-dim);white-space:pre-wrap;overflow-wrap:anywhere}.field-row{display:flex;flex-wrap:wrap;gap:10px;width:100%}.field-row>label{display:block}.lbl{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.req{font-size:10.5px;font-weight:700;letter-spacing:.04em;color:var(--warn);text-transform:uppercase}.sub{font-size:12px;color:var(--text-dim)}.field-error{display:block;margin-top:4px;font-size:11.5px;color:var(--bad)}input[aria-invalid=true],select[aria-invalid=true]{border-color:var(--bad)}.birthday{border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:10px 12px 12px;margin:0;width:100%}.birthday legend{padding:0 6px;font-size:13px;font-weight:600}.form-divider{display:flex;align-items:center;gap:10px;width:100%;margin:6px 0 2px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim)}.form-divider:before,.form-divider:after{content:"";flex:1;height:1px;background:#ffffff1f}.detail-grid{display:grid;grid-template-columns:auto 1fr;gap:5px 14px;font-size:13px;margin:0}.detail-grid dt{color:var(--text-dim);white-space:nowrap}.detail-grid dd{margin:0;overflow-wrap:anywhere}.gameover-backdrop{align-items:flex-start}.gameover{width:min(560px,100%);max-height:calc(100dvh - 28px);overflow-y:auto;text-align:left}.gameover-head{text-align:center;margin-bottom:4px}.gameover-kicker{font-size:11.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--text-dim)}.gameover-head h2{margin:2px 0 6px;font-size:30px;line-height:1.1}.gameover-head h2.won{color:var(--us)}.gameover-head h2.lost{color:var(--them)}.gameover-score{font-size:34px;font-weight:800;font-variant-numeric:tabular-nums;display:flex;justify-content:center;gap:10px}.gameover-score .us{color:var(--us)}.gameover-score .them{color:var(--them)}.gameover-score .dash{color:var(--text-dim);font-weight:400}.gameover-line{min-height:2.9em;display:flex;align-items:center;justify-content:center;text-align:center;margin:10px 0 4px;padding:0 6px;font-size:15px;line-height:1.45;color:var(--gold);animation:fade-line .42s var(--ease)}@keyframes fade-line{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.gameover-line{animation:none}}.gameover-hands{margin-top:8px}.hand-row{display:grid;grid-template-columns:1.8em minmax(0,1fr) 2.8em 3.2em 5em;gap:8px;align-items:center;padding:7px 4px;border-bottom:1px solid rgba(255,255,255,.07);font-size:13.5px}.hand-row:last-child{border-bottom:0}.hand-row.head{font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);border-bottom-color:#ffffff24}.hand-row .num{text-align:right;font-variant-numeric:tabular-nums}.hand-row .running{color:var(--text-dim)}.hand-row .called{display:flex;align-items:baseline;gap:6px;min-width:0}.hand-row .called .glyph{font-size:15px}.hand-row .called.ours .ellipsis{color:var(--us);font-weight:600}.hand-row .called.theirs .ellipsis{color:var(--them);font-weight:600}.outcome{font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:1px 6px;border-radius:999px;white-space:nowrap;background:#ffffff1a;color:var(--text-dim)}.outcome.bate{background:#ff8b7a33;color:var(--bad)}.outcome.half-bate{background:#ffcf6b2e;color:var(--warn)}@media (max-width: 460px){.hand-row{grid-template-columns:1.6em minmax(0,1fr) 2.6em 3em;font-size:13px}.hand-row .running{display:none}.gameover-head h2{font-size:26px}.gameover-score{font-size:29px}}.message-row{display:flex;align-items:center;gap:8px;padding:9px 11px;border-radius:10px;background:#0000002e;border:1px solid rgba(255,255,255,.08);font-size:13.5px;line-height:1.4;flex-wrap:wrap}.message-row.retired{opacity:.55}.visibility{border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:10px 12px 12px;margin:0;width:100%;display:grid;gap:8px}.visibility legend{padding:0 6px;font-size:13px;color:var(--text-dim)}.pick{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;cursor:pointer}.pick input{width:18px;height:18px;min-height:0;margin-top:2px}.pick>span{display:grid;gap:2px}.pick b{font-size:14px;color:var(--text)}.pick .muted{font-size:12px;line-height:1.4}.table-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 14px;border-radius:12px;background:#ffffff0d;border:1px solid rgba(255,255,255,.09)}.seats{font-size:11.5px;font-weight:700;letter-spacing:.02em;padding:3px 9px;border-radius:999px;white-space:nowrap;background:#ffffff1a;color:var(--text-dim)}.seats.last{background:#6fd3a333;color:var(--us)}.metric-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-top:10px}.metric{padding:11px 12px;border-radius:12px;background:#0003;border:1px solid rgba(255,255,255,.08)}.metric-value{font-size:25px;font-weight:800;line-height:1.05;font-variant-numeric:tabular-nums}.metric-label{font-size:11px;color:var(--text-dim);margin-top:3px;letter-spacing:.02em}.save-state{font-size:12.5px;line-height:1.5;margin:10px 0 0;padding:8px 10px;border-radius:8px;border:1px solid transparent}.save-state.ok{color:var(--text-dim);background:#ffffff08}.save-state.bad{color:var(--danger, #ff6b6b);border-color:#ff6b6b73;background:#ff6b6b14}.save-state code{font-size:11.5px;word-break:break-word}.spark{display:flex;align-items:flex-end;gap:6px;height:78px;margin-top:14px}.spark-col{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:4px}.spark-bar{width:100%;min-height:2px;border-radius:4px 4px 0 0;background:linear-gradient(180deg,var(--us),rgba(111,211,163,.35))}.spark-col span{font-size:10px;color:var(--text-dim)}.suit-bars{display:grid;gap:7px;margin-top:10px}.suit-bar{display:grid;grid-template-columns:1.4em 1fr 2.6em;gap:9px;align-items:center}.suit-bar .glyph{font-size:17px;text-align:center}.suit-bar .bar{height:9px;border-radius:999px;background:#ffffff14}.suit-bar .bar>div{height:100%;border-radius:999px;background:var(--us)}.suit-bar .num{font-size:12px;color:var(--text-dim);text-align:right}.friend-row{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:11px;background:#0000002e;border:1px solid rgba(255,255,255,.08);flex-wrap:wrap}.friend-row.waiting{border-color:#ffcf6b66;background:#ffcf6b12}.sub-head{font-size:11px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--text-dim);margin:14px 0 7px}.sub-head:first-of-type{margin-top:4px}.friend-sent{font-size:11.5px;color:var(--text-dim);white-space:nowrap}.friend-yes{color:var(--us);font-weight:800}.friend-error{font-size:11px;color:var(--bad)}.nav-badge{margin-left:auto;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:var(--warn);color:var(--ink);font-size:11px;font-weight:800;display:inline-flex;align-items:center;justify-content:center}.spotlight{display:flex;align-items:center;gap:10px;width:100%;padding:9px 13px;border-radius:12px;background:#ffffff0d;border:1px solid rgba(255,255,255,.09);animation:fade-line .42s var(--ease);font:inherit;color:inherit;text-align:left;cursor:pointer;transition:background .12s var(--ease),border-color .12s var(--ease)}.spotlight-row{display:flex;align-items:stretch;gap:6px;width:100%}.spotlight-row .spotlight{flex:1 1 0;min-width:0;width:auto}.spot-arrow{flex:0 0 34px;border-radius:12px;background:#ffffff0d;border:1px solid rgba(255,255,255,.09);color:var(--text-dim);font-size:22px;line-height:1;cursor:pointer}.spot-arrow:hover{background:#ffffff1c;color:var(--text);border-color:#fff3}.spot-arrow:active{transform:translateY(1px)}.spotlight .champ-stars{margin-left:5px}.spotlight:hover{background:#ffffff17;border-color:#fff3}.spotlight:active{transform:translateY(1px)}.spotlight.static{cursor:default}.spotlight.static:hover{background:inherit;border-color:inherit}.spotlight.static:active{transform:none}.spotlight.badge{border-color:#ecc46a61;background:#ecc46a14}.spotlight.badge:hover{background:#ecc46a26;border-color:#ecc46a99}.spotlight b{font-size:14px}.spotlight-what{display:block;font-size:12px;color:var(--text-dim)}.spotlight-what b{font-size:12px;color:var(--gold)}.spotlight-mark{margin-left:auto;color:var(--gold);font-size:17px}@media (prefers-reduced-motion: reduce){.spotlight{animation:none}}.check-email{display:flex;flex-direction:column;align-items:center;text-align:center;width:100%;gap:10px}.check-email .envelope{color:var(--us);margin:4px 0 2px}.check-email h2{margin:0;font-size:21px;letter-spacing:-.01em}.check-email .lede{margin:0;font-size:14.5px;line-height:1.5;color:var(--text)}.check-email .addr{margin:-4px 0 2px;padding:7px 12px;border-radius:8px;background:#00000047;border:1px solid rgba(255,255,255,.1);font-weight:600;font-size:14.5px;overflow-wrap:anywhere;max-width:100%}.check-email .gate{margin:2px 0 0;padding:9px 12px;border-radius:9px;border:1px solid rgba(255,207,107,.4);background:#ffcf6b12;color:var(--warn);font-size:13px;line-height:1.5}.check-email .tips{margin:2px 0 6px;padding:0;list-style:none;text-align:left;width:100%;color:var(--text-dim);font-size:12.5px;line-height:1.6}.check-email .tips li{padding-left:14px;position:relative}.check-email .tips li:before{content:"·";position:absolute;left:4px}.tour{position:fixed;inset:0;z-index:90}.tour-dim{position:absolute;inset:0;background:#020c09c7}.tour-hole{position:absolute;border-radius:12px;box-shadow:0 0 0 9999px #020c09c7;outline:2px solid var(--focus);outline-offset:2px;transition:top .18s var(--ease),left .18s var(--ease),width .18s var(--ease),height .18s var(--ease);pointer-events:none}.tour-card{position:absolute;width:320px;max-width:calc(100vw - 28px);background:#0a2d22;border:1px solid rgba(255,255,255,.14);border-radius:16px;padding:16px;box-shadow:var(--shadow-hi);animation:toast-in .16s var(--ease) both}.tour-card h3{margin:2px 0 6px;font-size:17px}.tour-card p{margin:0;color:var(--text-dim);font-size:13.5px;line-height:1.5}.tour-step{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold)}.btn-link{background:none;border:0;color:var(--text-dim);font:inherit;font-size:12.5px;text-decoration:underline;cursor:pointer;padding:4px}.btn-link:hover{color:var(--text)}.teach-bar{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--card-w) * 1.4 + 62px);width:min(560px,calc(100vw - 20px));background:#0a2d22;border:1px solid rgba(255,255,255,.14);border-radius:16px;padding:14px 16px;box-shadow:var(--shadow-hi);z-index:60}.teach-bar h3{margin:0 0 4px;font-size:16px}.teach-bar p{margin:0 0 10px;color:var(--text-dim);font-size:13.5px;line-height:1.5}.teach-bar .ask{color:var(--gold);font-size:13.5px;line-height:1.5;margin:0 0 10px}.teach-count{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim)}.rules{width:min(680px,100%)}.rules h3{margin:22px 0 6px;font-size:16px;color:var(--gold)}.rules p,.rules li{color:var(--text-dim);font-size:14px;line-height:1.6}.rules ul{margin:6px 0;padding-left:20px}.rules .order{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.rules .order b{background:var(--paper);color:var(--ink);border-radius:6px;padding:4px 8px;font-size:14px;min-width:26px;text-align:center}.rules .order b.high{background:var(--gold)}.daily-headline{font-size:clamp(20px,6.2vw,30px);line-height:1.15;font-weight:700;margin:2px 0 6px;text-wrap:balance}.daily-headline .pct{color:var(--gold)}.daily-board{list-style:none;margin:8px 0 4px;padding:0;display:flex;flex-direction:column;gap:2px}.daily-board li{display:grid;grid-template-columns:3.2em auto 1fr auto;align-items:center;gap:8px;padding:5px 8px;border-radius:7px;font-size:14px}.daily-board li:nth-child(odd){background:#ffffff09}.daily-board li.after-gap{margin-top:10px;position:relative}.daily-board li.after-gap:before{content:"⋯";position:absolute;left:0;right:0;top:-12px;text-align:center;font-size:11px;line-height:1;color:var(--text-dim)}.daily-board li.me{background:#ecc46a29;outline:1px solid rgba(236,196,106,.42)}.daily-board .place{color:var(--text-dim);font-variant-numeric:tabular-nums}.daily-board li.me .place{color:var(--gold)}.daily-board .who{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.daily-board .score{font-weight:600;font-variant-numeric:tabular-nums}.daily-strip{display:flex;align-items:center;gap:10px;flex-wrap:wrap;width:100%;padding:10px 12px;border-radius:12px;background:#08221ad1;border:1px solid rgba(255,255,255,.09)}.daily-strip .what{flex:1 1 11em;min-width:0}.daily-strip .what b{display:block;font-size:14px}.daily-strip .what span{font-size:12px;color:var(--text-dim)}.daily-strip .btn{flex:0 0 auto;padding:7px 14px;font-size:14px}.daily-strip{background:#ecc46a1a;border-color:#ecc46a8c}.daily-strip .what b{color:var(--gold)}.daily-strip .btn.primary{background:linear-gradient(180deg,#f3cf7d,#e0b04c);border-color:#f3d68f;color:var(--ink)}.daily-strip .btn.primary:hover{background:linear-gradient(180deg,#f7d78f,#e8ba58)}.daily-strip .btn.ghost{border-color:#ecc46a99;color:var(--gold)}.daily-strip .btn.ghost:hover{background:#ecc46a24}:root{--alert: #f2802e}.bell-wrap{position:relative;flex:0 0 auto}.bell{background:transparent;border:1px solid rgba(255,255,255,.12);border-radius:999px;width:38px;height:38px;font-size:17px;line-height:1;color:var(--text);cursor:pointer;position:relative;display:inline-flex;align-items:center;justify-content:center}.bell:hover{border-color:#ffffff47}.bell:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.bell .dot,.nav-item .alert-dot{position:absolute;top:-3px;right:-3px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:var(--alert);color:#2a1000;font-size:11px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px var(--rail)}.nav-item{position:relative}.nav-item .alert-dot{top:8px;right:10px}.bell-pop{position:absolute;top:46px;right:0;z-index:60;width:min(330px,calc(100vw - 24px));padding:10px;border-radius:14px;background:#08221af7;border:1px solid rgba(255,255,255,.12);box-shadow:var(--shadow-hi);display:flex;flex-direction:column;gap:6px}.notice{display:flex;gap:10px;align-items:flex-start;text-align:left;width:100%;padding:9px 10px;border-radius:10px;border:1px solid transparent;background:#ffffff0a;color:var(--text);cursor:pointer;font:inherit}.notice:hover{background:#ffffff17;border-color:#ffffff24}.notice:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.notice .count{flex:0 0 auto;min-width:22px;height:22px;border-radius:999px;background:var(--alert);color:#2a1000;font-size:12px;font-weight:800;display:inline-flex;align-items:center;justify-content:center}.notice .say{display:flex;flex-direction:column;gap:1px;min-width:0}.notice .say b{font-size:13.5px;line-height:1.3}.notice .say .muted{font-size:12px}.lobby-top{position:relative;width:100%;margin-bottom:8px}.lobby-top .bell-cluster{position:absolute;top:0;right:0}.nav-item .alert-dot{margin-left:0}.brand h1{display:inline-flex;align-items:center;gap:12px}.brand-mark{border-radius:8px}.btn-link.disclose{align-self:flex-start;font-size:13px;text-decoration:none;opacity:.85}.btn-link.disclose:hover{opacity:1;text-decoration:underline}.inapp-note{display:flex;align-items:flex-start;gap:10px;width:100%;padding:10px 12px;border-radius:12px;font-size:13px;line-height:1.45;background:#6ea8ff1f;border:1px solid rgba(110,168,255,.4)}.inapp-note span{flex:1}.inapp-close{flex:0 0 auto;background:none;border:0;color:var(--text-dim);font-size:20px;line-height:1;padding:0 2px;cursor:pointer}.inapp-close:hover{color:var(--text)}.avatar{overflow:hidden}button.avatar{padding:0;border:0;color:inherit;font:inherit;cursor:zoom-in}button.avatar:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.avatar.has-picture{background:#00000040}.seat.us .avatar.has-picture{box-shadow:0 0 0 2px #6fd3a3bf}.seat.them .avatar.has-picture{box-shadow:0 0 0 2px #f0a868bf}.picture-view{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:20px;background:#04100cb8;animation:fade-line .16s var(--ease);cursor:zoom-out}.picture-view figure{position:relative;margin:0;cursor:default;background:#08221af5;border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:12px 12px 10px;text-align:center;box-shadow:0 18px 50px #00000080}.picture-view img{display:block;width:min(240px,70vw);height:min(240px,70vw);object-fit:cover;border-radius:12px}.picture-view figcaption{margin-top:8px;font-weight:700;font-size:15px}.picture-close{position:absolute;top:-12px;right:-12px;width:32px;height:32px;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:#0c3527;color:var(--text);font-size:20px;line-height:1;cursor:pointer}@media (prefers-reduced-motion: reduce){.picture-view{animation:none}}.picture-choose{display:flex;align-items:center;gap:14px;margin-top:10px}.picture-preview{width:96px;height:96px;border-radius:50%;object-fit:cover;flex:0 0 auto;box-shadow:0 0 0 2px #ffffff26}.picture-preview.small{width:46px;height:46px;opacity:.8}.daily-switch{gap:6px;margin:8px 0 4px}.daily-switch .tab{flex:0 0 auto;padding:6px 12px;font-size:13px;min-height:0}.points-board .who{display:flex;flex-direction:column;line-height:1.2}.points-sub{font-size:11px}.points-board .place.medal-1{color:var(--gold)}.points-board .place.medal-2{color:#cfd8dc}.points-board .place.medal-3{color:#d59a6a}.points-earned{margin:8px 0 0;font-size:13.5px}.points-earned b{color:var(--gold)}.avatar.is-pending{box-shadow:0 0 0 2px #e8c14a}.avatar.is-pending img{opacity:.85}.nav-item .waiting-dot{position:absolute;top:9px;right:11px;width:12px;height:12px;border-radius:50%;background:#3ddc84;box-shadow:0 0 0 2px var(--rail),0 0 8px #3ddc84b3;animation:waiting-pulse 2s ease-in-out infinite}@keyframes waiting-pulse{0%,to{opacity:1}50%{opacity:.55}}@media (prefers-reduced-motion: reduce){.nav-item .waiting-dot{animation:none}}.nav-item.table-open{animation:table-glow 2s ease-in-out infinite}@keyframes table-glow{0%,to{background-color:#3ddc840f;border-color:#3ddc8447;box-shadow:0 0 #3ddc8400}50%{background-color:#3ddc8433;border-color:#3ddc84b3;box-shadow:0 0 14px #3ddc8447}}@media (prefers-reduced-motion: reduce){.nav-item.table-open{animation:none;background-color:#3ddc8424;border-color:#3ddc848c}}.champ-stars{display:inline-flex;gap:2px;margin-left:6px;vertical-align:middle}.champ-star{position:relative;display:inline-grid;place-items:center;width:20px;height:20px;clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);background:#cd7f32}.champ-star.week{background:#c9d1d9}.champ-star.month{background:#f5c542}.champ-star b{font-size:8px;line-height:1;font-weight:800;color:#1b1205;margin-top:2px}table.rank tr.champ{background:#f5c54214}table.rank tr.champ .player-cell .ellipsis{color:#f5d77a}.panel h4.sub{margin:16px 0 4px;font-size:14px}.panel .note{font-size:12px;line-height:1.5;margin:0 0 8px}.chat-bubble{position:absolute;z-index:30;max-width:150px;width:max-content;padding:6px 11px;border-radius:14px;background:var(--paper);color:var(--ink);font-size:13px;font-weight:600;line-height:1.25;box-shadow:0 4px 14px #00000059;pointer-events:none;animation:chat-pop 4.5s var(--ease) forwards}.seat.north .chat-bubble{top:calc(100% + 8px);left:50%;--tx: -50%}.seat.south .chat-bubble{bottom:calc(100% + 8px);left:50%;--tx: -50%}.seat.west .chat-bubble{left:calc(100% + 8px);top:50%;--ty: -50%}.seat.east .chat-bubble{right:calc(100% + 8px);top:50%;--ty: -50%}.seat.west .chat-bubble,.seat.east .chat-bubble{white-space:normal;max-width:120px}.chat-bubble{transform:translate(var(--tx, 0),var(--ty, 0))}@keyframes chat-pop{0%{opacity:0;transform:translate(var(--tx, 0),var(--ty, 0)) scale(.85)}6%{opacity:1;transform:translate(var(--tx, 0),var(--ty, 0)) scale(1)}85%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.chat-bubble{animation:chat-fade 4.5s linear forwards}@keyframes chat-fade{0%,85%{opacity:1}to{opacity:0}}}.chat-backdrop{position:fixed;inset:0;z-index:60;background:#00000059;display:flex;align-items:flex-end;justify-content:center}.chat-panel{width:100%;max-width:520px;background:var(--rail);border:1px solid rgba(255,255,255,.14);border-radius:18px 18px 0 0;padding:14px 14px max(14px,env(safe-area-inset-bottom));box-shadow:0 -10px 40px #00000080}.chat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.chat-line{position:relative;min-height:48px;padding:8px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.16);background:#ffffff14;color:var(--text);font:inherit;font-size:15px;font-weight:600;text-align:left;cursor:pointer}.chat-line:hover:not(:disabled){background:#ffffff29}.chat-line:disabled{opacity:.45;cursor:not-allowed}.chat-line kbd{display:none}@media (hover: hover) and (pointer: fine){.chat-line kbd{display:inline-block;margin-right:8px;padding:0 6px;border-radius:5px;background:#ffffff24;font:600 11px/18px ui-monospace,monospace;color:var(--text-dim)}}.chat-recent{list-style:none;margin:12px 2px 0;padding:10px 0 0;border-top:1px solid rgba(255,255,255,.1);font-size:13px;color:var(--text-dim)}.chat-recent li{padding:1px 0}.chat-recent b{color:var(--text);font-weight:600}.chat-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.chat-hide{display:flex;grid-template-columns:none;align-items:center;gap:8px;font-size:13px}@media (min-width: 700px){.chat-backdrop{align-items:flex-end;justify-content:flex-end;background:transparent}.chat-panel{border-radius:16px;margin:0 18px 150px 0;max-width:440px}}.idle-banner{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;margin:0 12px 8px;padding:8px 12px;border-radius:12px;border:1px solid rgba(255,207,107,.55);background:#ffcf6b1f;color:var(--warn);font-size:13.5px;font-weight:600;text-align:center}.chat-hide input{width:20px;height:20px;flex:0 0 auto;padding:0;accent-color:var(--focus)}.rank-board{list-style:none;margin:8px 0 4px;padding:0;display:flex;flex-direction:column;gap:2px}.rank-board li{display:grid;grid-template-columns:1.8em auto minmax(0,1fr) auto auto;align-items:center;gap:9px;padding:6px 8px;border-radius:8px;font-size:14px}.rank-board li:nth-child(odd){background:#ffffff09}.rank-board li.champ{background:#ecc46a12}.rank-board li.me{background:#ecc46a29;outline:1px solid rgba(236,196,106,.42)}.rank-board li.after-gap{margin-top:10px;position:relative}.rank-board li.after-gap:before{content:"⋯";position:absolute;left:0;right:0;top:-12px;text-align:center;font-size:11px;line-height:1;color:var(--text-dim)}.rank-board .place{color:var(--text-dim);font-weight:700;font-variant-numeric:tabular-nums;text-align:right}.rank-board li.me .place,.rank-board .place.medal-1{color:var(--gold)}.rank-board .place.medal-2{color:#cfd8dc}.rank-board .place.medal-3{color:#d59a6a}.rank-board .who{display:grid;min-width:0}.rank-board .name{font-weight:600}.rank-board .sub{font-size:11.5px}.rank-board .rec{display:grid;justify-items:end;line-height:1.2;font-variant-numeric:tabular-nums}.rank-board .rec .muted{font-size:11.5px}.rank-board .fb{min-width:0}.rank-more{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:6px 14px;margin-top:4px}@media (max-width: 520px){.rank-board li{gap:7px;padding:6px}.rank-board .fb-text{display:none}.rank-board .fb-icon{display:inline;font-weight:700;font-size:16px}.rank-board .fb .btn{padding:0 10px;min-width:34px}}.rank-help{margin-top:18px;font-size:12.5px;color:var(--text-dim)}.rank-help summary{cursor:pointer}.rank-help p{margin:8px 0 0}.watch-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 12px 8px;padding:8px 12px;border:1px solid var(--border, rgba(255,255,255,.18));border-radius:10px;background:#ffffff0f;font-size:13px}.watch-banner span{flex:1;min-width:160px;opacity:.85}.watch-count{font-size:12px;opacity:.75;padding:0 6px;cursor:default}button.watchers{background:none;border:0;padding:0;color:inherit;font:inherit;text-decoration:underline dotted;cursor:pointer}.section-label{font-size:12px;letter-spacing:.08em;text-transform:uppercase;opacity:.7}.update-bar{position:fixed;top:0;left:0;right:0;z-index:90;display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;padding:8px 12px;font-size:13px;background:#141e1cf5;border-bottom:1px solid rgba(111,211,163,.6)}html[data-in-game="1"] .update-bar,body:has(.table) .update-bar{display:none}.bell-cluster{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto}.streak-fire{position:relative;background:none;border:0;padding:0;margin:0;width:34px;height:42px;cursor:default;color:inherit;display:inline-flex;align-items:center;justify-content:center}.streak-fire:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:8px}.streak-fire .flame-body{fill:url(#flameGrad)}.streak-fire.cold .flame-body{fill:#ffffff38}.streak-fire.cold{opacity:.7}.streak-num{position:absolute;left:0;right:0;top:19px;text-align:center;font-weight:800;line-height:1;color:#fff;text-shadow:0 1px 2px rgba(120,25,0,.9),0 0 3px rgba(120,25,0,.7);font-variant-numeric:tabular-nums;pointer-events:none}.streak-num.n1{font-size:17px}.streak-num.n2{font-size:15px}.streak-num.n3{font-size:11.5px;letter-spacing:-.3px;top:21px}.streak-tip{position:absolute;top:calc(100% + 4px);right:-4px;z-index:40;background:#111a18;border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:6px 9px;font-size:12.5px;white-space:nowrap;color:var(--text);box-shadow:0 6px 18px #00000073;opacity:0;pointer-events:none;transform:translateY(-2px);transition:opacity .12s,transform .12s}.streak-fire:hover .streak-tip,.streak-fire:focus .streak-tip{opacity:1;transform:none}.notice .streak-count{background:none;font-size:18px}.invite-note{display:flex;flex-direction:column;gap:2px;text-align:left;padding:10px 12px;border-radius:10px;font-size:13px;border:1px solid rgba(111,211,163,.55);background:#6fd3a31a}.invite-panel{display:flex;flex-direction:column;gap:10px}.invite-link{width:100%;font-size:12.5px;padding:9px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.16);background:#ffffff0d;color:var(--text);font-family:ui-monospace,monospace}.celebrate{position:fixed;top:10px;left:50%;transform:translate(-50%);z-index:95;display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center;width:min(520px,calc(100vw - 20px));padding:10px 14px;background:#0f1e1af7;border:1px solid rgba(255,207,107,.7);border-radius:14px;box-shadow:0 10px 30px #00000080;animation:celebrate-in .35s cubic-bezier(.2,1.3,.4,1) both}.celebrate-emoji{font-size:32px;line-height:1}.celebrate-text{display:flex;flex-direction:column;text-align:left;min-width:0;flex:1 1 140px;font-size:13px}.celebrate a.btn{text-decoration:none;color:inherit}.celebrate-text b{font-size:15.5px}.celebrate-text span{opacity:.85}.celebrate-note{color:var(--warn)}.celebrate-actions{display:inline-flex;gap:6px}@keyframes celebrate-in{0%{opacity:0;transform:translate(-50%,-14px) scale(.96)}}.confetti{position:fixed;inset:0;z-index:94;pointer-events:none;overflow:hidden}.confetti i{position:absolute;top:-14px;width:9px;height:15px;border-radius:2px;opacity:0;animation-name:confetti-fall;animation-timing-function:cubic-bezier(.3,.6,.5,1);animation-fill-mode:forwards}@keyframes confetti-fall{0%{opacity:1;transform:translateZ(0) rotate(0)}to{opacity:0;transform:translate3d(var(--drift),105vh,0) rotate(var(--spin))}}@media (prefers-reduced-motion: reduce){.celebrate{animation:none}}.gameover-share{margin-top:14px;padding:10px 12px;border:1px dashed var(--border, #3a4a44);border-radius:10px}.gameover-share-line{margin:0 0 8px;font-size:14px;font-style:italic}.gameover-share-img{display:block;width:100%;height:auto;border-radius:8px;margin:0 0 8px;background:#0f2a22}.gameover-share-score{margin:0 0 4px;font-size:13px;font-weight:700}.app-top{min-width:0}.lt-list{display:grid;gap:8px}.lt-head,.lt-row{display:grid;grid-template-columns:minmax(180px,1.2fr) minmax(140px,1.1fr) minmax(150px,1fr) auto;align-items:center;gap:12px}.lt-head{padding:0 14px 2px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);font-weight:700}.lt-row{padding:11px 14px;border-radius:12px;background:#ffffff0b;border:1px solid rgba(255,255,255,.09);border-left:4px solid var(--lvl, rgba(255, 255, 255, .2))}.lt-row.lvl-advanced{--lvl: var(--bad)}.lt-row.lvl-intermediate{--lvl: var(--warn)}.lt-row.lvl-beginner{--lvl: var(--us)}.lt-table{display:grid;gap:2px;min-width:0}.lt-table b{white-space:nowrap}.lt-table b{font-size:14.5px}.lt-code{font-family:ui-monospace,Menlo,monospace;font-size:11.5px;letter-spacing:.06em;color:var(--text-dim)}.lt-seats{display:flex;align-items:center;gap:8px;min-width:0}.lt-pips{display:inline-flex;gap:3px;flex:none}.lt-pips i{width:9px;height:9px;border-radius:50%;border:1.5px solid rgba(255,255,255,.45)}.lt-pips i.on{background:var(--us);border-color:var(--us)}.lt-names{font-size:12.5px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lt-pill{display:inline-block;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}.lt-pill.waiting{background:#ffcf6b26;color:var(--warn)}.lt-pill.playing{background:#6fd3a326;color:var(--us)}.lt-sub{font-size:12px;color:var(--text-dim);margin-left:6px;white-space:nowrap}.lt-acts{display:flex;gap:6px;justify-content:flex-end;white-space:nowrap}.lt-open{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px}.lt-open .lt-row b{white-space:nowrap}.lt-open .lt-row{grid-template-columns:1fr auto;padding:10px 12px}.lt-open .lt-row b{font-size:14px}.lt-open .lt-row .lt-names{display:block}@media (max-width: 760px){.lt-open{grid-template-columns:1fr}}@media (max-width: 600px){.lt-head{display:none}.lt-list .lt-row{grid-template-columns:1fr auto;grid-template-areas:"table acts" "seats seats" "status status";row-gap:6px}.lt-list .lt-row>.lt-table{grid-area:table}.lt-list .lt-row>.lt-table b{white-space:normal}.lt-list .lt-row>.lt-seats{grid-area:seats}.lt-list .lt-row>.lt-status{grid-area:status}.lt-list .lt-row>.lt-acts{grid-area:acts}}.table-invite{position:fixed;top:52px;right:8px;z-index:45;display:flex;align-items:stretch;max-width:min(230px,calc(100% - 16px));border-radius:12px;background:#061c15f5;border:1px solid rgba(236,196,106,.55);box-shadow:var(--shadow-hi);animation:toast-in .24s var(--ease) both}.table-invite-main{flex:1;text-align:left;padding:8px 4px 8px 11px;font-size:12.5px;line-height:1.3;color:var(--text);background:none;border:0;cursor:pointer}.table-invite-main b{color:var(--gold)}.table-invite-sub{display:block;margin-top:2px;font-size:11px;color:var(--text-dim)}.table-invite-x{align-self:flex-start;padding:4px 9px;font-size:18px;line-height:1;color:var(--text-dim);background:none;border:0;cursor:pointer}.gameover-share-note{margin:8px 0 0;padding:8px 10px;border-radius:8px;font-size:13px;background:#6fd3a324;color:var(--us)}.hand-crown{display:inline-flex;align-items:flex-start;gap:1px;margin-left:5px;vertical-align:middle;font-size:.95em;line-height:1}.hand-crown sup{font-size:.62em;font-weight:700;color:var(--gold, #ecc46a)}.table-icon{display:inline-flex;align-items:center;margin-left:5px;vertical-align:middle;line-height:1;color:var(--gold, #ecc46a);filter:drop-shadow(0 0 3px rgba(236,196,106,.45))}.table-icon.regular{color:#e9dcb8;filter:none;opacity:.9}.table-icon svg{display:block}.flair{display:inline-flex;gap:3px;margin-left:5px;vertical-align:middle}.flair-icon{display:inline-flex;align-items:center;font-size:.95em;line-height:1}.about{width:100%;color:var(--text-dim);font-size:13px;line-height:1.5}.about h2{margin:0 0 6px;font-size:15px;color:var(--text)}.about h3{margin:12px 0 2px;font-size:13px;color:var(--text)}.about p{margin:0 0 8px}.about ul{margin:0 0 8px;padding-left:18px}.seo-fallback{max-width:560px;margin:0 auto;padding:32px 16px;color:var(--text)}.seo-fallback h1{margin:0 0 8px}.seo-fallback p,.seo-fallback li{color:var(--text-dim)}.tip-target{cursor:pointer;-webkit-tap-highlight-color:transparent}.tip-target:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:6px}.tip-bubble{position:fixed;z-index:1000;box-sizing:border-box;padding:8px 10px;border-radius:8px;background:#0b1f17;color:#f2efe4;border:1px solid rgba(236,196,106,.55);box-shadow:0 6px 18px #00000073;font-size:13px;line-height:1.35;text-align:center;pointer-events:none}.tip-bubble.above{transform:translateY(-100%)}
