:root{--bg:#ede1db;--surface:#f9f3f0;--surface-2:#e6d6ce;--ink:#2a1b18;--ink-2:#7a625b;--line:#d3bfb6;--accent:#b5261e;--accent-ink:#fff7f5;--gold:#d98a2b;--good:#3e9a5a;--rail:#3a3a3a;--card:#fffdfb;--card-ink:#2a1b18;--bezel:#1a1214;--shadow:0 6px 18px #3c140a2e;--prop-brown:#8b5a3c;--prop-lightBlue:#6fb6e0;--prop-pink:#d96ba8;--prop-orange:#e8842b;--prop-red:#c8302e;--prop-yellow:#e9c63a;--prop-green:#3e9a5a;--prop-darkBlue:#2a4c9e;--prop-railroad:var(--rail);--prop-utility:#a8b87a;--font-display:"Bricolage Grotesque", "Instrument Sans", system-ui, sans-serif;--font-body:"Instrument Sans", system-ui, -apple-system, sans-serif;--dur:.18s;--dur-slow:.45s;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--tap:44px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#1b1214;--surface:#251a1d;--surface-2:#352529;--ink:#f4e9e4;--ink-2:#a88f88;--line:#443237;--accent:#e0493e;--accent-ink:#fff7f5;--gold:#e8a04a;--good:#5db87a;--rail:#b4b4b4;--card:#2f2226;--card-ink:#f4e9e4;--bezel:#0e0a0b;--shadow:0 6px 18px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#1b1214;--surface:#251a1d;--surface-2:#352529;--ink:#f4e9e4;--ink-2:#a88f88;--line:#443237;--accent:#e0493e;--accent-ink:#fff7f5;--gold:#e8a04a;--good:#5db87a;--rail:#b4b4b4;--card:#2f2226;--card-ink:#f4e9e4;--bezel:#0e0a0b;--shadow:0 6px 18px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%}html{overflow-x:hidden}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;-webkit-tap-highlight-color:transparent;margin:0;font-size:14px;line-height:1.45;overflow-x:hidden}#root{min-height:100dvh}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0;padding:0}button:disabled{cursor:default}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a{color:inherit}[hidden]:not([hidden=until-found]){display:none}.disp{font-family:var(--font-display)}.num{font-variant-numeric:tabular-nums}@media (prefers-reduced-motion:reduce){:root{--dur:0s;--dur-slow:0s}}.phone{background:var(--surface);width:100%;height:100dvh;min-height:100dvh;padding-top:var(--safe-top);flex-direction:column;display:flex;position:relative;overflow:hidden}.topbar{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:8px;min-height:48px;padding:10px 12px 8px;display:flex}.wordmark{font-family:var(--font-display);font-variation-settings:"wdth" 75;letter-spacing:.06em;text-transform:uppercase;align-items:center;min-height:28px;padding-right:4px;font-size:15px;font-weight:800;text-decoration:none;display:inline-flex}.topbar .spacer{margin-left:auto}.topbar .pill{color:var(--ink-2);background:var(--surface-2);border-radius:999px;align-items:center;min-height:28px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.page{padding:28px 20px calc(28px + var(--safe-bottom));flex:1;width:100%;max-width:44ch;margin:0 auto;overflow:auto}.kicker{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:0 0 8px;font-size:12px;font-weight:600}h1{font-family:var(--font-display);font-variation-settings:"wdth" 100, "opsz" 96;letter-spacing:-.02em;text-wrap:balance;margin:0 0 12px;font-size:40px;font-weight:800;line-height:1}h2{font-family:var(--font-display);margin:24px 0 6px;font-size:16px;font-weight:700}.page p{margin:0 0 12px}.muted{color:var(--ink-2);font-size:13px}.btn{min-height:var(--tap);background:var(--ink);color:var(--bg);border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:15px;font-weight:700;text-decoration:none;display:inline-flex}.btn.primary{background:var(--accent);color:var(--accent-ink)}.btn.ghost{border:1.5px solid var(--line);color:var(--ink);background:0 0}.btn:disabled{opacity:.4}.stack{flex-direction:column;gap:10px;margin:18px 0;display:flex}.field{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);flex-direction:column;gap:6px;font-size:12px;font-weight:600;display:flex}.field input,.field select{font:inherit;font-family:var(--font-body);letter-spacing:0;text-transform:none;color:var(--ink);background:var(--card);border:1.5px solid var(--line);min-height:var(--tap);border-radius:12px;padding:8px 12px;font-size:16px;font-weight:500}.code{font-family:var(--font-display);letter-spacing:.18em;text-transform:uppercase;font-size:32px;font-weight:800}.problem{color:var(--accent);font-size:13px;font-weight:600}.share{flex-direction:column;gap:8px;margin:4px 0 16px;display:flex}.share .link{color:var(--ink-2);word-break:break-all;background:var(--surface-2);border-radius:12px;padding:10px 12px;font-size:13px}.seats{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.seat{min-height:var(--tap);background:var(--card);border:1.5px solid var(--line);border-radius:12px;align-items:center;gap:10px;padding:6px 12px;font-weight:600;display:flex}.seat .dot{background:var(--good);border-radius:50%;flex:none;width:8px;height:8px}.seat.away .dot{background:var(--line)}.seat .who{flex:1;align-items:center;gap:6px;display:inline-flex}.seat .tag{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);background:var(--surface-2);border-radius:999px;padding:2px 6px;font-size:10px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.table-loading{padding:24px 14px}.turn{color:var(--ink-2);flex:none;justify-content:space-between;align-items:center;padding:8px 14px 6px;font-size:12px;display:flex}.turn b{color:var(--ink);font-weight:600}.plays{vertical-align:-1px;gap:4px;margin-left:8px;display:inline-flex}.plays i{background:var(--accent);border-radius:50%;width:8px;height:8px;display:block}.plays i.off{background:var(--line)}.view{overscroll-behavior:contain;scrollbar-width:none;flex:1;padding-bottom:8px;overflow:hidden auto}.view::-webkit-scrollbar{display:none}.ladder{padding-bottom:4px}.row{cursor:pointer;border-bottom:1px solid var(--line);transition:background var(--dur);grid-template-columns:auto 1fr auto;align-items:center;gap:0 10px;padding:2px 14px 8px;display:grid;position:relative}.row .who{font-family:var(--font-display);letter-spacing:-.01em;min-height:var(--tap);transition:color var(--dur);border-radius:8px;align-items:center;gap:5px;padding-right:4px;font-size:16px;font-weight:700;display:inline-flex}.row .who:active{background:var(--surface-2)}.row .chev{color:var(--ink-2);font-size:15px;font-weight:500}.youtag{font-family:var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);vertical-align:2px;font-size:10px;font-weight:600}.row .stats{color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;grid-column:2;min-width:0;font-size:12px;overflow:hidden}.row .stats b{color:var(--ink);font-weight:600}.win{align-self:center;gap:3px;display:flex}.row .win{grid-column:3}.win i{border:1.5px solid var(--ink-2);border-radius:50%;width:10px;height:10px;display:block}.win i.on{background:var(--accent);border-color:var(--accent)}.row .sets{flex-wrap:wrap;grid-column:1/-1;gap:4px;margin-top:2px;display:flex}.row.you{background:var(--surface-2);border-top:2px solid var(--ink);border-bottom:0;margin-top:4px}.row.active{box-shadow:inset 4px 0 0 var(--accent)}.row.active .who{color:var(--accent)}.turn-dot{background:var(--accent);border-radius:50%;width:9px;height:9px;animation:1.4s ease-in-out infinite beat;display:inline-block}.row.target .who,.row.picked .who{color:var(--ink);padding-left:8px}.row.target .who{background:color-mix(in srgb, var(--accent) 14%, transparent);box-shadow:0 0 0 2px var(--accent);animation:1.1s ease-in-out infinite pulse}.row.picked .who{background:var(--accent);color:var(--accent-ink);box-shadow:0 0 0 2px var(--accent)}.row.picked .who .chev,.row.picked .who .youtag{color:var(--accent-ink)}.meter{transition:box-shadow var(--dur);border:1.5px solid #0000;border-radius:5px;align-items:center;gap:2px;padding:2px;display:inline-flex}.meter i{border:1.5px solid var(--c);background:0 0;border-radius:2px;width:9px;height:15px;display:block}.meter i.on{background:var(--c)}.meter em{color:var(--ink-2);margin-left:1px;font-size:9px;font-style:normal;font-weight:700}.meter.done{border-color:var(--ink)}.set{color:inherit;transition:box-shadow var(--dur), background var(--dur);border-radius:7px;flex-direction:column;align-items:center;gap:2px;padding:3px 4px;display:inline-flex}.set small{letter-spacing:.02em;color:var(--ink-2);white-space:nowrap;font-size:9px;font-weight:600}.set.done small{color:var(--ink)}.set .bld{background:var(--ink);color:var(--surface);letter-spacing:0;border-radius:3px;margin-left:3px;padding:0 3px;font-size:8px}button.set{min-width:var(--tap);min-height:var(--tap);justify-content:center}.set.target{background:color-mix(in srgb, var(--accent) 14%, transparent);box-shadow:0 0 0 2px var(--accent);animation:1.1s ease-in-out infinite pulse}.set.picked{background:var(--accent);box-shadow:0 0 0 2px var(--accent)}.set.picked small,.set.picked .meter em{color:var(--accent-ink)}@keyframes pulse{0%,to{box-shadow:0 0 0 2px var(--accent)}50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 45%, transparent)}}@keyframes beat{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.7)}}@media (prefers-reduced-motion:reduce){.set.target,.row.target .who,.turn-dot{animation:none}}.actionbar{background:var(--ink);color:var(--bg);box-shadow:var(--shadow);border-radius:12px;flex:none;align-items:center;gap:8px;min-height:52px;margin:0 10px 4px;padding:8px 10px;font-size:13px;display:flex}.actionbar .t{flex:1;min-width:0}.actionbar .t b{font-family:var(--font-display);font-size:14px;font-weight:700;display:block}.actionbar .t span{opacity:.75;font-size:12px;display:block}.actionbar .t .notice{color:var(--gold)}.actionbar .go{background:var(--accent);color:var(--accent-ink);border-radius:999px;flex:none;min-height:36px;padding:0 14px;font-size:13px;font-weight:700}.actionbar .go.alt{color:var(--bg);background:#ffffff24}.actionbar .go:disabled{opacity:.35}.actionbar .x{background:#ffffff24;border-radius:50%;flex:none;place-items:center;width:36px;height:36px;font-size:15px;display:grid}.card{background:var(--card);border:1px solid var(--line);width:66px;height:94px;font-family:var(--font-display);font-variation-settings:"wdth" 80;text-align:left;color:var(--card-ink);transition:transform var(--dur) ease, box-shadow var(--dur), opacity var(--dur);border-radius:8px;flex-direction:column;flex:none;display:flex;position:relative;overflow:hidden;box-shadow:0 2px 6px #00000024}.card .band{color:#fff;text-transform:uppercase;letter-spacing:.05em;text-shadow:0 1px 1px #00000059;background:var(--c);flex:none;align-items:flex-end;height:36px;padding:4px 6px;font-size:10px;font-weight:700;display:flex}.card .band.split{background:linear-gradient(135deg, var(--c) 50%, var(--c2) 50%)}.card .body{flex:1;padding:5px 6px;font-size:10.5px;font-weight:600;line-height:1.12}.card .body small{letter-spacing:0;color:var(--ink-2);margin-top:2px;font-size:9px;font-weight:500;line-height:1.15;display:block}.card .val{color:#2a1b18;background:#ffffffe6;border-radius:8px;padding:1px 4px;font-size:9px;font-weight:800;line-height:1.3;position:absolute;top:3px;right:4px}.card.money .band{background:var(--gold);color:#2a1b18;text-shadow:none}.card.money .body{color:var(--card-ink);place-items:center;font-size:20px;font-weight:800;display:grid}.card.action .band{color:var(--gold);text-shadow:none;letter-spacing:.08em;background:#2a1b18}.card.action .body{font-size:11.5px}.card.rent .body,.card.wildcard .body{letter-spacing:.06em;text-transform:uppercase;font-size:12px;font-weight:800}.card.rent .body small,.card.wildcard .body small{text-transform:none;letter-spacing:0}.card.ghost{box-shadow:none;opacity:.45;background:0 0;border-style:dashed}.card.ghost .band{opacity:.3}.card.ghost .body{color:var(--ink-2);font-size:16px;font-weight:400}.card.back{background:var(--ink);border-color:var(--ink);place-items:center;display:grid}.card.back:before{content:"";background:repeating-linear-gradient(135deg,#0000 0 5px,#ffffff12 5px 7px);border:1.5px solid #ffffff29;border-radius:5px;position:absolute;inset:4px}.card.back span{color:var(--gold);letter-spacing:.14em;font-variation-settings:"wdth" 75;font-size:12px;font-weight:800;position:relative;transform:rotate(-90deg)}.card.dim{opacity:.55}.card.target{cursor:pointer;box-shadow:0 0 0 2px var(--accent);animation:1.1s ease-in-out infinite pulse}.card.picked{box-shadow:0 0 0 2px var(--accent);background:color-mix(in srgb, var(--accent) 22%, var(--card))}@media (prefers-reduced-motion:reduce){.card{transition:none}.card.target{animation:none}}.hand{height:calc(176px + var(--safe-bottom));padding:0 0 calc(26px + var(--safe-bottom));isolation:isolate;flex:none;justify-content:center;align-items:flex-end;display:flex;position:relative}.hand .lbl{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);font-size:10.5px;font-weight:600;position:absolute;top:6px;left:14px}.hand .slot{margin:0 var(--ov,-15px);touch-action:none;flex:none;position:relative}.hand .slot.sel{z-index:10}.hand:where(:has(.slot.sel)) .lbl{opacity:0}.hand .card{transform:rotate(calc(var(--r) * 1deg)) translateY(calc(var(--y) * 1px));transform-origin:50% 125%;cursor:pointer}.hand .card.sel{opacity:1;transform:translateY(-30px)scale(1.12);box-shadow:0 10px 24px #0000004d}.hand.discarding .card{outline:2px dashed var(--accent);outline-offset:-2px}.row .drops{z-index:5;background:color-mix(in srgb, var(--surface-2) 70%, transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);gap:8px;padding:6px 10px;display:flex;position:absolute;inset:0}.drop{border:2px dashed var(--ink-2);font-family:var(--font-display);color:var(--ink);background:color-mix(in srgb, var(--surface) 60%, transparent);border-radius:12px;flex:1;place-items:center;min-height:56px;font-size:15px;font-weight:700;display:grid}.drop.bank{border-color:var(--gold);color:var(--gold);flex:0 0 38%}.picker{scrollbar-width:none;border:0;flex:none;gap:6px;min-width:0;margin:0 0 22px;padding:8px 10px 4px;display:flex;overflow-x:auto}.picker::-webkit-scrollbar{display:none}.chip{min-height:var(--tap);border:1.5px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;flex:none;align-items:center;gap:7px;padding:0 14px 0 10px;font-size:13px;font-weight:600;display:inline-flex}.chip .sw{background:var(--c);border:1.5px solid #0000001f;border-radius:5px;width:18px;height:18px}.chip.on{border-color:var(--ink);background:var(--surface-2)}.chip:disabled{opacity:.4}.seat-switch select{font:inherit;color:var(--ink);background:var(--surface-2);border:0;border-radius:999px;min-height:36px;padding:0 12px;font-size:13px;font-weight:600}.psheet-backdrop{z-index:29;cursor:pointer;background:#140a0873;border:0;padding:0;position:absolute;inset:0}.psheet{inset:calc(var(--safe-top) + 44px) 0 0 0;z-index:30;background:var(--surface);border-radius:18px 18px 0 0;flex-direction:column;display:flex;position:absolute;box-shadow:0 -8px 24px #0000002e}.psheet .ph{border-bottom:1px solid var(--line);touch-action:none;cursor:grab;flex:none;align-items:center;gap:10px;padding:16px 14px 10px;display:flex;position:relative}.psheet .grip{cursor:pointer;background:0 0;border:0;width:88px;height:22px;margin-left:-44px;padding:0;position:absolute;top:0;left:50%}.psheet .grip span{background:var(--line);border-radius:2px;width:36px;height:4px;margin:6px auto 0;display:block}.psheet .ph .n{font-family:var(--font-display);letter-spacing:-.02em;align-items:baseline;gap:6px;font-size:24px;font-weight:800;display:inline-flex}.psheet .ph .s{color:var(--ink-2);text-align:right;margin-left:auto;font-size:12px;line-height:1.3}.psheet .ph .x{width:var(--tap);height:var(--tap);background:var(--surface-2);border-radius:50%;flex:none;place-items:center;font-size:15px;display:grid}.psheet .pb{padding:4px 0 calc(24px + var(--safe-bottom));overscroll-behavior:contain;flex:1;overflow:hidden auto}.psheet .pb::-webkit-scrollbar{display:none}.hint{background:var(--accent);color:var(--accent-ink);border-radius:10px;margin:10px 14px 0;padding:8px 12px;font-size:12.5px;font-weight:600}.sec{padding:12px 14px 2px}.sec .lbl{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px;font-size:11px;font-weight:600;display:flex}.sec .lbl b{color:var(--ink);font-family:var(--font-display);letter-spacing:0;text-transform:none;font-size:14px;font-weight:700}.sec .lbl .rent{color:var(--ink);letter-spacing:0;text-transform:none;text-align:right;font-weight:500}.sec .empty{color:var(--ink-2);font-size:12px}.cards{width:100%;transition:box-shadow var(--dur), background var(--dur);scrollbar-width:none;border-radius:10px;gap:6px;padding:3px 3px 6px;display:flex;overflow-x:auto}.cards::-webkit-scrollbar{display:none}.cards.facedown .card{margin-right:-46px}.cards.facedown .card:last-child{margin-right:0}button.cards{cursor:pointer;text-align:left}.cards.target{box-shadow:0 0 0 2px var(--accent);background:color-mix(in srgb, var(--accent) 14%, transparent);animation:1.1s ease-in-out infinite pulse}.cards.picked{box-shadow:0 0 0 2px var(--accent);background:color-mix(in srgb, var(--accent) 30%, transparent)}.card.building{outline:1.5px dashed var(--line);outline-offset:2px;margin-left:6px}@media (prefers-reduced-motion:reduce){.cards.target{animation:none}}.conn{text-align:center;background:var(--surface-2);color:var(--ink-2);flex:none;padding:6px 12px;font-size:12px;font-weight:600}.conn.closed{background:var(--ink);color:var(--bg)}.gameover{z-index:25;background:var(--surface);padding-top:var(--safe-top);padding-bottom:calc(24px + var(--safe-bottom));position:absolute;inset:0;overflow:hidden auto}.gameover .crown{padding:28px 20px 8px}.gameover .crown h1{margin-bottom:6px}.gameover .winning .sec{padding-top:6px}.gameover .actions{flex-direction:column;padding:12px 20px 4px;display:flex}.gameover .kicker.final{color:var(--ink-2);margin:0;padding:18px 14px 6px}.flights{z-index:40;pointer-events:none;position:fixed;inset:0}.flight{transform-origin:0 0;will-change:transform;filter:drop-shadow(0 10px 16px #0000004d);position:absolute;top:0;left:0}.flash{animation:.7s ease-out flash}@keyframes flash{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 70%, transparent);background:color-mix(in srgb, var(--accent) 22%, transparent)}to{box-shadow:0 0 0 10px #0000}}.turn .piles span{border-radius:6px;padding:0 3px}@keyframes tray-arrive{0%{box-shadow:0 -8px 24px #0000002e, 0 0 0 3px var(--accent)}to{box-shadow:0 -8px 24px #0000002e,0 0 #0000}}.paytray.arriving{animation:1.1s ease-out tray-arrive}@media (prefers-reduced-motion:reduce){.paytray.arriving{animation:none}}.paytray{background:var(--surface);border-top:2px solid var(--ink);flex-direction:column;flex:none;max-height:54%;display:flex;box-shadow:0 -8px 24px #0000001f}.paytray .ph{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:10px;padding:12px 14px 10px;display:flex}.paytray .ph .n{font-family:var(--font-display);letter-spacing:-.02em;flex:1;min-width:0;font-size:18px;font-weight:800}.paytray .ph .s{color:var(--ink-2);text-align:right;font-size:12px;line-height:1.3}.paytray .ph .s small{font-size:10px;display:block}.paytray .go{background:var(--accent);color:var(--accent-ink);min-height:var(--tap);border-radius:999px;flex:none;padding:0 18px;font-size:14px;font-weight:700}.paytray .go:disabled{opacity:.35}.paytray .pb{padding-bottom:calc(12px + var(--safe-bottom));overscroll-behavior:contain;flex:1;overflow:hidden auto}.hint.warn{background:var(--surface-2);color:var(--ink);border:1.5px solid var(--gold)}.respond{background:var(--surface);border-top:3px solid var(--accent);max-height:60%;padding-bottom:calc(12px + var(--safe-bottom));flex-direction:column;flex:none;display:flex;box-shadow:0 -8px 24px #00000024}.respond .rh{padding:14px 16px 6px}.respond .kicker{margin-bottom:4px}.respond .what{font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;margin:0 0 6px;font-size:22px;font-weight:800;line-height:1.1}.respond .muted{margin:0}.chain{color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:4px 6px;padding:6px 16px 4px;font-size:12px;display:flex}.chain .step{background:var(--surface-2);color:var(--ink);border-radius:999px;align-items:center;gap:4px;padding:3px 8px;font-weight:600;display:inline-flex}.chain .step.no{background:var(--ink);color:var(--bg)}.respond .actions{gap:8px;padding:10px 16px 0;display:flex}.respond .actions .btn{flex:1}@keyframes shout{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.respond{animation:.3s ease-out shout}@media (prefers-reduced-motion:reduce){.respond{animation:none}}.toast{cursor:pointer;background:var(--ink);color:var(--bg);box-shadow:var(--shadow);white-space:nowrap;text-overflow:ellipsis;border-radius:999px;flex:none;align-self:center;max-width:92%;margin:0 10px 6px;padding:8px 14px;font-size:13px;font-weight:600;overflow:hidden}.toast.win{background:var(--accent);color:var(--accent-ink)}
