:root{color:#1c2540;font-synthesis:none;background:#f3f5fa;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input{font:inherit}button{cursor:pointer}.shell{max-width:980px;margin:0 auto;padding:24px 20px 64px}header{justify-content:space-between;align-items:center;margin-bottom:64px;display:flex}.brand{letter-spacing:.02em;color:#182342;font-size:28px;font-weight:900}.brand span{color:#e1713d}.top-label{color:#5a6378;font-size:14px}.card{background:#fff;border:1px solid #e2e6ef;border-radius:24px;max-width:680px;margin:0 auto;padding:clamp(24px,5vw,48px);box-shadow:0 16px 40px #1d27410e}.home{text-align:center;max-width:540px}.eyebrow{text-transform:uppercase;letter-spacing:.14em;color:#bd5a2d;font-size:13px;font-weight:800}h1{letter-spacing:-.035em;margin:12px 0;font-size:clamp(30px,5vw,42px);line-height:1.13}h2{margin:0 0 12px}.card>p{color:#5b6578;line-height:1.55}.primary,.secondary,.danger{border-radius:12px;min-height:48px;padding:13px 18px;font-weight:750}.primary{color:#fff;background:#182b58;border:2px solid #182b58;margin-top:18px}.secondary{color:#182b58;background:#fff;border:2px solid #a7b2c8}.danger{color:#fff;background:#a52b32;border:2px solid #a52b32}.primary:hover{background:#284074}.secondary:hover{background:#f1f4fa}.danger:hover{background:#872029}button:disabled{opacity:.55;cursor:wait}button:focus-visible,input:focus-visible,.code:focus-visible{outline-offset:3px;outline:3px solid #ed914f}.status{color:#216346;background:#e8f6ee;border-radius:50px;align-items:center;gap:9px;padding:9px 14px;font-size:14px;font-weight:750;display:inline-flex}.status-dot{background:#3a9e70;border-radius:50%;width:9px;height:9px}.code-panel{text-align:center;background:#f4f6fa;border-radius:18px;margin:28px 0;padding:24px}.field-label{color:#636e83;margin-bottom:8px;font-size:13px;font-weight:700;display:block}.code{letter-spacing:.14em;font-variant-numeric:tabular-nums;-webkit-user-select:all;user-select:all;white-space:nowrap;margin:12px 0 20px;font-size:clamp(40px,9vw,64px);line-height:1.15;display:block}.copy-message{color:#276749;min-height:22px;margin:10px 0 0}.participant{border-bottom:1px solid #e6e9f0;justify-content:space-between;align-items:center;gap:12px;margin-bottom:25px;padding:4px 0 24px;display:flex}.participant strong{font-size:20px;display:block}.badge{color:#354b88;background:#e9edfa;border-radius:50px;padding:8px 12px;font-size:13px;font-weight:750}.room form label{margin-bottom:10px;font-weight:750;display:block}.name-row{gap:10px;display:flex}.name-row input{border:2px solid #bac4d5;border-radius:12px;flex:1;min-width:0;padding:11px 12px}.field-error,.alert{color:#8d1e29;background:#fff0f1;border-radius:10px;margin:10px 0;padding:12px}.danger-link,.text-button{color:#962a33;background:0 0;border:0;margin-top:22px;padding:10px 0;font-weight:700;text-decoration:underline}.text-button{color:#213d74;margin:10px auto 0;display:block}.modal-backdrop{background:#141d35ad;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:20px;width:100%;max-width:440px;padding:28px;box-shadow:0 24px 70px #0004}.modal p{color:#515d72;line-height:1.5}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:28px;display:flex}@media (width<=520px){.shell{padding:18px 14px 40px}header{margin-bottom:30px}.card{border-radius:18px;padding:24px 18px}.name-row{flex-direction:column}.name-row button,.code-panel button{width:100%}.code{letter-spacing:.08em;font-size:clamp(36px,10vw,52px)}.modal-actions button{flex:1}}.home-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:22px;display:grid}.home-grid .card{width:100%;max-width:none}.join-card{text-align:left}.join-card h2{font-size:26px}.join-card form{flex-direction:column;align-items:stretch;display:flex}.join-card label{margin:16px 0 8px;font-weight:750}.join-card input{border:2px solid #bac4d5;border-radius:12px;width:100%;padding:11px 12px}.join-card .primary{align-self:flex-start}.occupancy{color:#354b88;font-weight:750}.participant-list{margin:0 0 26px;padding:0;list-style:none}.participant-list .participant{min-width:0;margin:0;padding:12px 0}.participant-list .participant strong{overflow-wrap:anywhere}.participant-badges{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.activity{color:#216346;background:#e8f6ee;border-radius:10px;margin:10px 0;padding:12px}.room h2{margin:0;font-size:21px}@media (width<=700px){.home-grid{grid-template-columns:1fr}.join-card .primary{width:100%}}@media (width<=520px){.participant-list .participant{align-items:flex-start}.participant-badges{flex-shrink:0}}.name-suffix{color:#5b6578;font-size:.78em;font-weight:650}.expiry-warning{color:#553b05;overflow-wrap:anywhere;background:#fff4d7;border:1px solid #d6ae54;border-radius:.65rem;margin:0 0 1rem;padding:.85rem 1rem}.connection-notice{color:#765306;padding:.7rem 0}.participant-badges{flex-wrap:wrap}.badge.reconnecting{color:#765306;background:#fff4d7}.room{max-width:940px}.waiting-columns{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:32px;margin-bottom:32px;display:grid}.participant-list{padding-left:26px;list-style:decimal}.participant-list .participant{display:list-item}.participant-list .participant-badges{justify-content:flex-start;margin-top:8px}.observer-line{overflow-wrap:anywhere;background:#f4f6fa;border-radius:12px;flex-direction:column;gap:8px;padding:14px;display:flex}.observer-line .participant-badges{justify-content:flex-start}.configuration-hint,.config-control p{color:#5b6578;font-size:14px;line-height:1.5}.config-control{margin:16px 0}.config-control label{margin-bottom:8px;font-weight:750;display:block}.config-control select,.bot-controls select{width:100%;min-width:0;min-height:48px;font:inherit;color:#1c2540;background:#fff;border:2px solid #bac4d5;border-radius:12px;padding:10px}.config-control .check-label{align-items:center;gap:12px;min-height:44px;display:flex}.check-label input{accent-color:#182b58;flex-shrink:0;width:22px;height:22px}.config-control .control-state:empty{display:none}.config-control .field-error{color:#8d1e29}.deck-card{overflow-wrap:anywhere;background:#f4f6fa;border-radius:14px;align-items:flex-start;gap:16px;padding:16px;display:flex}.deck-card h3{margin:0 0 8px;font-size:18px}.deck-card p{margin:8px 0;line-height:1.5}.deck-card>div{min-width:0}.deck-cover,.neutral-card{object-fit:contain;flex-shrink:0;width:70px;max-height:110px}.neutral-card{color:#78839a;height:90px}.configuration-summary{grid-template-columns:1fr auto;gap:12px;display:grid}.configuration-summary dt{font-weight:700}.configuration-summary dd{margin:0}select:focus-visible{outline-offset:3px;outline:3px solid #ed914f}@media (width<=760px){.waiting-columns{grid-template-columns:1fr;gap:26px}.deck-card{gap:12px}.configuration-summary{grid-template-columns:1fr}.configuration-summary dd{margin-bottom:8px}}@media (width<=520px){.participant-list .participant{flex-wrap:wrap}.participant-badges{flex-shrink:1;justify-content:flex-start;max-width:100%}}.start-room{margin-bottom:28px}.start-room p:empty{display:none}.game-shell{max-width:1280px}.game-shell header{margin-bottom:20px}.game-shell h1{overflow-wrap:anywhere;font-size:clamp(25px,4vw,34px)}.game-shell h1:focus{outline:none}.initial-table-notice{background:#e9edfa;border-radius:12px;padding:12px 16px;line-height:1.5}.game-summary{font-weight:750}.selected-card{outline-offset:-3px;outline:3px solid #ab5913}.card-play-button{width:100%;margin-top:10px}.played-row{text-align:left;gap:12px;max-width:100%;padding:4px;display:flex;overflow-x:auto}.played-row>div{flex:0 0 215px;min-width:0}.round-review{background:#f5f0e3;border-radius:12px;padding:12px}.round-review ol{padding-left:24px}.game-initial-state fieldset{border:1px solid #cbd3e2;border-radius:10px;min-width:0}.game-initial-state fieldset button{margin:4px;padding:8px 18px}.game-initial-state button[aria-pressed=true]{outline:3px solid #ab5913}.standings{border-collapse:collapse;width:100%}.standings td,.standings th{text-align:left;overflow-wrap:anywhere;border-bottom:1px solid #cbd3e2;padding:14px 8px}.standings .badge{margin:5px 8px}.winner-row{background:#fff0d9}.victory{background:#e9edfa;border-radius:12px;padding:16px;font-weight:750}.results-shell>.primary{margin-top:12px}.card-play-surface{cursor:pointer}.card-play-button{background:#24418a;margin-top:8px;display:block}.card-play-button:disabled{background:#747d91}.card-play-button:focus-visible{outline-offset:3px;outline:3px solid #ab5913}@media (width<=760px){.standings thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.standings tr{grid-template-columns:55px minmax(0,1fr) 65px;align-items:center;display:grid}.standings td,.standings th{min-width:0;padding:12px 4px}.standings td:before{content:attr(data-label);font-size:12px;display:block}.standings .badge{margin:6px 0;display:block}}.game-layout{grid-template-columns:minmax(210px,.85fr) minmax(0,2fr) minmax(180px,1fr);align-items:start;gap:18px;display:grid}.game-panel{overflow-wrap:anywhere;background:#fff;border:1px solid #e2e6ef;border-radius:18px;min-width:0;padding:18px}.game-panel h2{font-size:20px}.game-people{grid-area:1/1}.game-plays{text-align:center;flex-direction:column;grid-area:1/2/auto/span 2;justify-content:center;min-height:190px;display:flex}.game-indicator{grid-area:2/1}.game-hand{grid-area:2/2}.game-initial-state{grid-area:2/3}@media (width>=761px){.game-layout:not(:has(.game-hand)) .game-initial-state{grid-column:2/span 2}}.game-players{margin:0;padding-left:24px}.game-players li{border-bottom:1px solid #e2e6ef;padding:12px 0}.game-score{margin-top:6px;display:block}.game-players .participant-badges{justify-content:flex-start;margin-top:8px}.game-people .observer-line{margin-top:18px}.hand-row{scrollbar-gutter:stable;gap:12px;padding:4px 4px 12px;display:flex;overflow-x:auto}.hand-row:focus-visible{outline-offset:2px;outline:3px solid #ed914f}.game-card{background:#f7f8fc;border:1px solid #cbd3e2;border-radius:12px;min-width:0;padding:12px}.hand-row .game-card{flex:1 0 210px}.game-card h3{overflow-wrap:anywhere;margin:0 0 8px;font-size:18px}.game-card-image{text-align:center;color:#78839a;min-height:76px}.game-card-image img{object-fit:contain;max-width:100%;height:78px}.game-card-image svg{width:85px;height:76px}.game-card-image p{color:#8d1e29;font-size:14px}.card-values{border-collapse:collapse;table-layout:fixed;width:100%;font-size:14px}.card-values th,.card-values td{text-align:left;overflow-wrap:anywhere;border-bottom:1px solid #d4dbe8;padding:8px 3px}.card-values th:first-child{width:42%}.card-values thead th{font-size:13px}.active-attribute{background:#fff0d9}.active-label{color:#765306;font-size:12px;display:block}.card-details-button{width:100%;margin-top:14px;padding:8px}.indicator-compact{display:none}.card-details-dialog{color:#1c2540;border:1px solid #cbd3e2;border-radius:18px;width:min(480px,100% - 28px);max-height:calc(100dvh - 36px);padding:22px;overflow:auto}.card-details-dialog::backdrop{background:#141d35ad}.card-details-dialog h2{overflow-wrap:anywhere;font-size:22px}.card-details-dialog>button{margin-top:20px}.card-characteristic,.card-note{overflow-wrap:anywhere;line-height:1.5}.swipe-hint{color:#5b6578;font-size:14px}@media (width<=760px){.game-layout{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.game-people{grid-area:1/1}.game-initial-state{grid-area:1/2}.game-indicator{grid-area:2/1/auto/span 2}.game-plays{grid-area:3/1/auto/span 2;min-height:110px}.game-hand{grid-area:4/1/auto/span 2}.indicator-full{display:none}.indicator-compact{justify-content:space-between;align-items:center;gap:12px;display:flex}.indicator-compact strong{min-width:0}.hand-row .game-card{flex:0 0 220px}.game-panel{padding:16px}.game-players li{padding:8px 0}.game-shell header{margin-bottom:16px}.game-people .badge{padding:5px 9px}}.bot-controls{flex-wrap:wrap;align-items:center;gap:.5rem;width:100%;display:flex}.bot-controls label{flex:8rem;margin:0}.bot-controls .danger-link{min-height:48px}.bot-name-dialog{border:1px solid var(--border,#ccc);border-radius:1rem;width:min(28rem,100vw - 2rem);max-height:calc(100dvh - 36px);padding:1.25rem;overflow:auto}.bot-name-dialog::backdrop{background:#0008}.bot-name-dialog input{width:100%}.card-heading{justify-content:space-between;align-items:start;gap:6px;display:flex}.card-heading h3{min-width:0}.card-round-attribute{flex:none;font-size:18px}.active-mark{margin-left:3px;font-size:8px}.game-card-slot{min-width:0}.hand-row .game-card-slot{flex:1 0 210px}.game-card-slot .game-card{width:100%}.bot-level,.observer-abbreviation,.mesa-title{display:none}@media (width<=760px){.hand-row .game-card-slot{flex:0 0 220px}.game-plays #game-plays-title{order:-2}.game-plays .empty-mesa{order:-1}.played-row>div{flex-direction:column;display:flex}.play-author{order:-1}.game-legend{display:none}}@media (width>=761px){.game-shell{max-width:1400px;padding:16px;container:game-table/inline-size}.game-shell header{height:28px;margin-bottom:4px}.game-shell .brand{font-size:20px}.game-shell .top-label{display:none}.game-shell h1{margin:4px 0;font-size:24px}.game-summary{margin:6px 0 12px;font-size:14px}.game-layout{grid-template-columns:264px minmax(0,1fr) 240px;gap:12px}.game-panel{padding:12px}.game-panel h2{margin:0;font-size:20px}.game-card-panel-heading{min-height:68px}.game-card-panel-heading p{margin:6px 0 0}.indicator-full{padding:4px}.game-players{margin-top:8px;padding:0;list-style:none}.game-players li{flex-wrap:wrap;align-items:baseline;gap:4px 8px;padding:8px 6px;display:flex}.game-players li.is-opener{background:#edf1f9}.game-score{white-space:nowrap;margin:0;display:inline}.game-players .participant-badges{display:contents}.game-people .badge{background:0 0;border-radius:0;padding:0;font-size:13px}.game-people .host-badge,.game-people .bot-badge{display:none}.game-people .opener-badge{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.bot-level,.observer-abbreviation{font-size:13px;display:inline}.observer-description{display:none}.game-people .observer-line{gap:4px;margin-top:8px;padding:8px}.game-people .observing{margin:8px 0 0}.game-plays{justify-content:flex-start;position:relative}.played-row{align-items:flex-start;min-height:354px}.played-row>div{flex:0 0 230px}.game-plays .empty-mesa{margin:0;position:absolute;top:12px;left:16px}.game-plays h2{margin-top:6px}.play-author{margin:6px 0 0;font-size:13px}.play-number,.mobile-mesa-title{display:none}.mesa-title{display:inline}.game-card-slot,.hand-row .game-card-slot{flex:0 0 230px;width:230px}.game-card-slot .game-card{flex-direction:column;width:230px;min-height:321px;display:flex}.game-card h3{margin:0;font-size:16px}.card-heading{margin-bottom:4px}.game-card .card-values th,.game-card .card-values td{padding:6px 3px}.game-card .card-values th:first-child{width:54%}.game-card .card-values th:nth-child(2){width:32%}.game-card .card-values th:last-child,.game-card .card-values td:last-child{text-align:right;width:14%}.game-card .card-details-button{flex:1;min-height:56px;margin-top:3px}.card-play-button{min-height:48px;padding:8px}.game-initial-state p{margin:10px 0}.turn-player>span,.turn-time>span{display:block}.game-initial-state fieldset{margin:10px 0 0;padding:8px}.game-initial-state fieldset button{width:100%;margin:4px 0;padding:8px;display:block}.game-initial-state fieldset p{font-size:14px}.game-legend{margin:8px 0 0;font-size:13px}}.played-row:focus-visible{outline-offset:2px;outline:3px solid #ed914f}.mesa-overflow-hint{display:none}@container game-table (width>=1368px){.game-layout{grid-template-columns:264px 816px 264px}.played-row,.hand-row{gap:46px}.hand-row{scrollbar-gutter:auto}.game-card-panel-heading{min-height:0;margin-bottom:8px}.indicator-attribute-label{display:none}.game-hand #game-hand-title{text-align:center}.mesa-overflow-hint{color:#354b88;margin:0;font-size:13px;display:block;position:absolute;bottom:17px;right:16px}}
